2012-03-04 64 views
1

我有什么应该是一个超级简单的形式,我试图用来一次更新多个记录。我在Rails 3上。我已经通过了所有的railscasts等,并且在这一点上拉着我的头发。我正在使用设计,并有一个联系人控制器。用户have_many:contacts和contacts_nested_attributes_for:contacts。形式是这样的:找不到<model>没有ID,嵌套属性

<%= 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似乎是存在和正确的,但我无法获得保存工作!我确信我在这里错过了一些明显的东西。

回答

-1

尝试删除fields_for,并且当您调用您的查找时,使用此[: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 

希望这个作品。