一度に複数のレコードを更新するために使用しようとしている非常に単純なフォームがあります。私は Rails 3 を使用しています。すべての Railscast などを経験しており、この時点で髪を引っ張っています。私はDeviseを使用しており、連絡先コントローラーを持っています。ユーザーには多くの連絡先があり、連絡先の入れ子になった属性を受け入れます。フォームは次のようになります。
<%= 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 は存在し、正しいようですが、保存が機能しません! ここで明らかな何かが欠けていると確信しています。