Ruby on rails 提交表单时将参数传递给控制器时出现问题

Ruby on rails 提交表单时将参数传递给控制器时出现问题,ruby-on-rails,ruby,ruby-on-rails-2,Ruby On Rails,Ruby,Ruby On Rails 2,在Rails 2.3.8中,我有一个需要客户id的信用卡控制器。我使用before_过滤器和方法获取客户id。我使用诸如new_admin_credit_card_path(:customer_id=>@customer.id)之类的路径访问信用卡控制器处理的页面。我在提交创建或编辑信用卡的表单时遇到问题。客户id未通过或已通过,但操作未正确响应。以下是我在表格中尝试的内容: <% form_for :credit_card, :url => admin_credit_cards_

在Rails 2.3.8中,我有一个需要客户id的信用卡控制器。我使用before_过滤器和方法获取客户id。我使用诸如new_admin_credit_card_path(:customer_id=>@customer.id)之类的路径访问信用卡控制器处理的页面。我在提交创建或编辑信用卡的表单时遇到问题。客户id未通过或已通过,但操作未正确响应。以下是我在表格中尝试的内容:

<% form_for :credit_card, 
:url => admin_credit_cards_path(:customer_id => @customer.id) do |f| %>

  ...BLAH BLAH CODE BLAH...

  <%= f.submit %>

<% end %>

您应该将customer_id作为表单中的隐藏字段传递,而不是作为path helper的一部分传递。

好的,我尝试过了,但出现了以下错误:ActiveRecord::RecordNotFound in Admin/credit cardsController#create无法找到没有id的客户,尽管customer_id在参数中:请求参数:{“format”=>“html”,“提交”=>“保存更改”、“信用卡”=>{“发卡机构id”=>“1”、“预期年份”=>“2023”、“信用卡号码”=>“4111111111”、“城市”=>“纽约”、“州”=>“纽约”、“邮编”=>“10016”、“地址1”=>“123第一大街”、“地址2”=>,“预期月份”=>“1”、“国家”=>“840”、“客户id”=>“37165”、“持卡人姓名”=>“新卡人”、“有效”=>“1”}已修复。隐藏字段不应在表单中。它应该是隐藏的\u字段\u标记
<% form_for (:credit_card, @credit_card, :url => { :controller => "admin/credit_cards", 
 :action => "update" } ) do |f| %>
def create
  @credit_card = scope.new(params[:credit_card])
  set_modified @credit_card

respond_to do |format|
  if @credit_card.save
    flash[:notice] = 'CreditCard was successfully created.'
    format.html { redirect_to admin_credit_card_path(:customer_id => @customer.id) }
    format.xml  { head :created, :location => admin_credit_card_url(:customer_id =>     
@customer.id ) }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @credit_card.errors.to_xml }
    end
  end
end


def update
@credit_card = scope.find(params[:id])
set_modified @credit_card

respond_to do |format|
  if @credit_card.save
    flash[:notice] = 'CreditCard was successfully updated.'
    format.html { redirect_to admin_credit_card_path(:customer_id => @customer.id ) }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @credit_card.errors.to_xml }
    end
  end
end