2012-03-14 4 views
0

Rails 2.3.8では、私はcustomer_idを必要とするクレジットカードコントローラを持っています。私はbefore_filterとメソッドを使用して顧客IDを取得します。 new_admin_credit_card_path(:customer_id => @ customer.id)のようなパスを使用して、クレジットカードコントローラが処理するページにアクセスします。クレジットカードを作成または編集するためのフォーム提出に問題があります。顧客IDは渡されないか、渡されますが、アクションは適切に応答しません。ここで私は私のform_forにしようとしているものです:フォームの送信中にコントローラに引数を渡すときに問題が発生する

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

    ...BLAH BLAH CODE BLAH... 

    <%= f.submit %> 

<% end %> 

ここに私が取得エラーです:、37165 CUSTOMER_ID =>:

ルーティングエラー admin_credit_card_urlは{から生成するのに失敗したコントローラ=> "管理者/ credit_cards "、:action =>" show "}、期待値:{:controller =>" admin/credit_cards "、:action =>" show "}、diff:{:customer_id => 37165}

試しました:

<% form_for (:credit_card, @credit_card, :url => { :controller => "admin/credit_cards", 
:action => "update" }) do |f| %> 

そして私は

不明アクション

アクションなしには、それは顧客IDがアクションだと思います37762.

に応えます。

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 

答えて

1

をあなたはむしろパスヘルパーの一部としてよりも、フォームで隠しフィールドとしてCUSTOMER_IDを渡す必要があります。ここでは

は私のコントローラで作成および更新方法です。

+0

は、[OK]を私はそれを試してみましたが、私はこのエラーを取得: リクエスト パラメータ:/クレジットcardsController#は がCUSTOMER_IDにもかかわらず パラメータにあるIDなしで顧客を見つけることができませんでし作成管理ではActiveRecord :: RecordNotFoundを: "commit" => "変更を保存"、 "credit_card" => {"issuer_id" => "1"、 "exp_year" => "2023" "ct_card_number" => "4111111111111111"、 "city" => "New York"、 "state" => "NY"、 "ジップ" => "10016"、 "アドレス1" => "123第一アベニュー"、 "アドレス2" => ""、 "exp_month" => "1"、 "国" => "840" 、 "customer_id" => "37165"、 "holder_name" => "NEW CARD"、 "アクティブ" => "1"}} –

+0

修正済み。隠しフィールドはフォーム内にあってはなりません。それはhidden_​​field_tagでなければなりません –

関連する問題