1

我有一个超级简单的表单,我试图用它来一次更新多条记录。我在 Rails 3 上。我经历了所有的 railscasts 等,此时我正在拔头发。我正在使用设计,并且有一个联系人控制器。用户有_many :contacts 和accepts_nested_attributes_for :contacts。表格如下所示:

<%= form_for @user, :url => '/updateusercontacts' do |i| %>
<%= i.fields_for :contacts do |f| %>    
    <%= f.label :first_name %>
    <%= f.text_field :firstname %>

    <%= f.label :last_name %>
    <%= f.text_field :lastname %>

    <%= f.label :phone_number %>
    <%= f.text_field :phonenumber %>
    <%= f.label :user_id %>
    <%= f.text_field :id %>
    <p>


<% end %>

表单显示正确,但在提交时我得到“找不到没有 ID 的联系人”。控制器看起来像:

def updatecontacts
    @contacts = Contact.find(params[:id])
    @contacts.each do |contact|
        contact.update_attributes(params[:id])
    end

render '/home'

end

参数似乎正确,并且 id 似乎存在且正确,但我无法保存工作!我确定我在这里遗漏了一些明显的东西。

4

1 回答 1

0

尝试删除 fields_for ,当你调用你的 find 时,使用这个 [:user][:contacts] 你的代码应该是这样的。看法:

  <%= form_for @user, :url => '/updateusercontacts' do |i| %>
    <%= i.label :first_name %>
    <%= i.text_field :firstname %>

    <%= i.label :last_name %>
    <%= i.text_field :lastname %>

    <%= i.label :phone_number %>
    <%= i.text_field :phonenumber %>
    <%= i.label :user_id %>
    <%= i.text_field :id %>
    <p>
<% end %>

控制器

def updatecontacts
    @contacts = Contact.find(params[:user][:contacts])
    @contacts.each do |contact|
        contact.update_attributes(params[:user][:contacts])
    end

render '/home'

end

希望这有效。

于 2012-07-25T10:54:44.270 回答