2012-03-04 7 views
1

私は一度に複数のレコードを更新するために使用しようとしている超シンプルなフォームにする必要があります。私はRails 3に乗っています。私はrailscastsなどのすべてを通り抜けており、この時点で私の髪を引っ張っています。私はDeviseを使用しており、連絡先コントローラを持っています。ユーザーはhave_many:連絡先、accepts_nested_attributes_for:連絡先。フォームは次のようになります。IDなしの<model>がネストされた属性で見つかりません

<%= 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 

・ホープ、この作品。

関連する問題