2011-07-16 13 views
1

現在、ネストされたモデルでフォームをセットアップしています。フォームは私が販売を作成することができ、それから私は顧客と車両(別のモデル)を作成することができます。Rails 3 Nested Modelフォーム:保護された属性を割り当てることができません

車両からネストされた別のモデルである登録番号を作成しようとすると問題が発生します。基本的には、フォームにテキストボックスを表示させることができますが、登録番号を作成しようとするとコンソールにcan not mass assign protected attribute :registration_numberというエラーが発生し、登録番号の車両を含む販売を編集するとテキストボックスは空になります。関与

モデルは以下のとおりです。

class Sale < ActiveRecord::Base 
    attr_accessible :customer_id, :vehicle_id, :sale_date, 
        :customer_attributes, :vehicle_attributes 

    belongs_to :customer 
    accepts_nested_attributes_for :customer 

    belongs_to :vehicle 
    accepts_nested_attributes_for :vehicle 

end 

class Vehicle < ActiveRecord::Base 
    attr_accessible :first_registration_date, :hidden, :registration_numbers_attributes 

    has_many :sales 
    has_many :customers, :through => :sales 

    has_many :vehicle_registration_numbers, :dependent => :delete_all 
    has_many :registration_numbers, :through => :vehicle_registration_numbers 
    accepts_nested_attributes_for :registration_numbers, :allow_destroy => true 

end 

class RegistrationNumber < ActiveRecord::Base 

    attr_accessible :number 

    has_many :vehicle_registration_numbers, :dependent => :delete_all 
    has_many :vehicles, :through => :vehicle_registration_numbers 

end 

class VehicleRegistrationNumber < ActiveRecord::Base 

    belongs_to :vehicle 
    belongs_to :registration_number 

end 

問題の形式は次のとおりです。

<%= form_for @sale, :html => {:class => 'fullform'} do |f| %> 

<%= field_set_tag 'Customer Details' do %> 
    <%= f.fields_for :customer do |builder| %> 
     <snip> 
    <% end %> 
<% end %> 

<%= field_set_tag 'Vehicle Details' do %> 
    <%= f.fields_for :vehicle do |vehicle_builder| %> 
     <snip> 
      <%= f.fields_for :registration_numbers do |registration_number_builder| %> 
       <%= registration_number_builder.text_field :number, :class => 'formtxtbox-short' %> 
      <% end %> 
    <% end %> 
<% end %> 

<% end %> 

どのような援助がいただければ幸いです - ありがとう!

答えて

3

リソースを誤って入れ子にしました。下の矢印を参照してください。

<%= field_set_tag 'Vehicle Details' do %> 
    <%= f.fields_for :vehicle do |vehicle_builder| %> 
    <snip> 
===>> <%= vehicle_builder.fields_for :registration_numbers do |registration_number_builder| %> 
      <%= registration_number_builder.text_field :number, :class => 'formtxtbox-short' %> 
     <% end %> 
    <% end %> 
<% end %> 
+0

もう一度やってくれてありがとう! –