Getting fields_for and accepts_nested_attributes_for to work with a belongs_to relationship

前端 未结 4 765
暖寄归人
暖寄归人 2020-11-29 23:48

I cannot seem to get a nested form to generate in a rails view for a belongs_to relationship using the new accepts_nested_attributes_for facility o

4条回答
  •  感动是毒
    2020-11-30 00:27

    I'm using Rails 2.3.5 and I noticed the same thing. Checking out the source for active_record's nested_attributes.rb, it looks like belongs_to should work fine. So it appears it might be a "nested forms" bug.

    I have a nested form exactly like yours, with User belongs_to :address, and Address is independent of the user.

    Then in the form, I just do <% f.fields_for :address_attributes do |address_form| %> instead of <% f.fields_for :address do |address_form| %>. Temporary hack until there's a better way, but this works. The method accepts_nested_attributes_for is expecting the params to include something like:

    {user=>{address_attributes=>{attr1=>'one',attr2=>'two'}, name=>'myname'}

    ...but fields_for is producing:

    {user=>{address=>{attr1=>'one',attr2=>'two'}, name=>'myname'}

    This way you don't have to add that has_one :account to your code, which doesn't work in my case.

    Update: Found a better answer:

    Here is the gist of the code I'm using to make this work right:

    Rails Nested Forms with belongs_to Gist

    Hope that helps.

提交回复
热议问题