attr_accessor在accept_nested_attributes_for中无法访问

在我的付款页面上有一些变量,例如card_number,我想从View传递给Model,但我不想将它们存储在db中。 我通常可以通过简单地使用attr_accessor轻松实现这一点,但在这种情况下,模型通过accepts_nested_attributes_for传递给params,并且由于某种原因,params没有被传递:

在User.rb我有

has_many :credit_cards accepts_nested_attributes_for :credit_cards 

在视图文件中我有一个嵌套的表单字段,如:

  blah blah 

Credit card

builder %> inside that


现在回到credit_card.rb我有:

 attr_accessor :test before_create :show_me_test_param private def show_me_test_param raise "#{test}" end 

现在奇怪的是,当我尝试保存记录时,它只返回一个空的exception。 该参数似乎没有通过accepts_nested_attributes_for从User传递给CreditCard?

传入的参数是:

 {"email"=>"name@example.com", "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?

这让我几次搞砸了! 嵌套对象的参数使用键model_name_attributes传递给控制器​​,该键将传递给控制器​​中model_name_attributes的new或update_attributes方法。

因此,您需要将:credit_card_attributes添加到attr_accessor以允许传入该密钥。