2011-06-21 9 views
0

ネストされたフォームを使用して子モデルを更新する際に問題があります。私は解決策を見つけることを願ってStackOverflowの多くのスレッドを読んだが、そこに運はない。サービスのattr_accessibleへのcontact_info_attributesはこの問題を解決するための何もしません。子モデル更新時の質量割り当てエラー

ここにフォームがあります。

<% form_for(@service) do |service| %> 
<%= fields_for :contact_info do |c| %> 
<p> 
    Contact Person: <%= c.text_field :contactPerson %> 
</p> 
<p> 
    Contact Number: <%= c.text_field :contactNumber %> 
</p> 
<% end %> 
<p> 
    Issue: <%= service.text_field :issue, :rows => 3 %> 
</p> 
<p> 
    Urgency: <%= service.text_field :urgency %> 
</p> 
<%= submit_tag "Update" %> 
<% end %> 

私のcontact_infoモデルです。

class ContactInfo < ActiveRecord::Base 
    has_many :services 

    attr_accessible :contactPerson, :contactNumber 
end 

私のサービスモデルです。

class Service < ActiveRecord::Base 
belongs_to :user 

has_one :contact_info 
accepts_nested_attributes_for :contact_info, :allow_destroy => true 

attr_accessible :issue, :urgency, :contact_info_attributes, :group, :member 

end 

ここには「更新」アクションがあります。

# services_controller.rb 

def update 
    @service = Service.find(params[:id]) 
    if @service.update_attributes(params[:service]) && @service.update_attributes(params[:contact_info]) 
    redirect_to service_path(@service) 
    else 
    redirect_to edit 
    end 
end 

毎回私は、フォームを更新しようとすると、フォームのサービスの一部大丈夫通過しますが、:contact_infoはそうのような質量割り当てエラーに実行し続けます。

Parameters: {"utf8"=>"✓", "authenticity_token"=>"ykJt08tkHSzoYgyQu11lnKms1BZ+vM2i/Q0ZOoYDxks=", "contact_info"=>{"contactPerson"=>"Jmes Jor", "contactNumber"=>"3726262"}, "service"=>{"issue"=>"My house is flooded.", "urgency"=>"1"}, "commit"=>"Update", "id"=>"46"} 
Service Load (0.8ms) SELECT "services".* FROM "services" WHERE "services"."id" = 46 LIMIT 1 
WARNING: Can't mass-assign protected attributes: contactPerson, contactNumber 

ヘルプ?

答えて

1

フォームはネストされていません。代わりの

<%= fields_for :contact_info do |c| %> 

入れ:

<%= service.fields_for :contact_info do |c| %> 
+0

なるほど、それを修正しました。ご協力いただきありがとうございます。 – Craig

関連する問題