2012-03-04 24 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 

希望這個作品。