2011-11-29 4 views
7

支払いページには、モデルからビューに渡すcard_numberなどの特定の変数がありますが、データベースに格納する必要はありません。私は通常だけで簡単にattr_accessorを使用することによって、これを達成することができますが、この場合にはモデルがaccepts_nested_attributes_for経由のparamsに渡されて、いくつかの理由のためのparamsを通過させていない:私はaccept_nested_attributes_forでattr_accessorにアクセスできない

has_many :credit_cards 

    accepts_nested_attributes_for :credit_cards 
を持ってUser.rbに

私は、ネストされたフォームフィールドを持つビューファイルで

、のようなもの:

blah blah 
    <h2>Credit card</h2> 
    <%= f.fields_for :credit_cards do |builder| %> 
    <%= render "credit_card_fields", :f => builder %> 
    <% end %> 

    inside that 
    <p> 
    <%= f.label :test %><br /> 
    <%= f.text_field :test %> 
    </p> 

はすぐに戻ってcredit_card.rbで私が持っている:

今、奇妙なことは、レコードを保存しようとすると、単に空の例外が返されるということです。 paramはaccepts_nested_attributes_forを介してUserからCreditCardに渡されたようではありませんか?

に渡されるparamは次のとおりです。

{"email"=>"[email protected]", "password"=>"pass123", "password_confirmation"=>"pass123", "credit_cards_attributes"=>{"0"=>{"test"=>"helllo this is the second attempt", "name_on_card"=>"first lastname", "card_number"=>"987498742897", "card_verification_value"=>"232", "expiry_date"=>"2141"}}} 

起こっていただきました!誰もが知っていますか? accepts_nested_attributes_forはattr_accessorで動作しますか?

+0

あなたはparamsハッシュは、あなたはそれが必要だと思うものを持っているかどうかを確認するために、コントローラのデバッグを試みたことがありますか? –

+0

ねえはい私は持っている、それは私が親モデルにフィールドを配置し、それを行う場合は動作します。それはaccepts_nestedの下ではうまく動作しないようですが、確かに他の人がそれに気付いていたら、 – Nick

+0

paramsハッシュはどのように見えますか?ユーザーコントローラーに表示されるparamsハッシュを投稿してください。 –

答えて

4

これは過去数回私を台無しにしました!ネストされたオブジェクトのパラメータはコントローラのモデルのnewまたはupdate_attributesメソッドに渡されるキーmodel_name_attributesでコントローラに送られます。

だから、そのキーを渡すことができるようにするために、あなたのattr_accessor:credit_card_attributesを追加する必要があります。

+0

paramを見ると、credit_card_attributesではなく、credit_cards_attributesとする必要があると思います。私はこれをクレジットカードのモデルに入れたら、何もしませんが、user.rbモデルに追加すると、コールバック全体がスキップされ、ユーザーにクレジットカードが追加されます!何か案は?信じられないほどイライラすることはありません – Nick

+0

同じ問題を抱えていますが、あなたは今このconfig'dをどうやって見せてくれますか? –

関連する問題