1

私は本当にこれを理解することはできません。大量割り当てエラーに関する同様の問題をたくさん読んだことがありますが、私が試したすべての解決策は失敗しました。

accept_nested_attributes_for と simple_form を使用して、機関モデルをコース モデルにネストしようとしています。私のコードは次のとおりです。

コースモデル:

  # Attributes 
  attr_accessible :class_end, :class_start, :cost, :effort, :level, :name, :overview, :prerequisites, :tags, :tag_list

  # Associations 
  belongs_to :institution 
  accepts_nested_attributes_for :institution 

機関モデル:

# Attributes
attr_accessible :bio, :city, :country, :name, :state, :twitter_url, :type, :url, :image_url, :email

 # Associations
 has_many :courses

ネストされた simple_form のビュー:

<%= simple_form_for(@course) do |f| %>
  <%= f.simple_fields_for :institutions do |i| %>
    <%= i.input :name %>            
    <%= f.input :name %>
    <%= f.input :overview %>
    <%= f.input :cost %> 
    <%= f.input :level %>
    <%= f.input :tag_list %> 
    <%= f.input :class_start %>
    <%= f.input :class_end %>
    <%= f.input :effort %>
    <%= f.input :prerequisites %>

    <%= f.button :submit %>
  <% end %>
<% end %>

私が得ているエラー:

Can't mass-assign protected attributes: institutions

{"utf8"=>"✓",
 "authenticity_token"=>"GRoBHYhpv3QyzvH2UHBaJQ/62+9QIDKIwp/VLiLMjus=",
 "course"=>{"institutions"=>{"name"=>"asdfa"},
 "name"=>"sdaf",
 "overview"=>"asdf",
 "cost"=>"Free",
 "level"=>"Beginner",
 "tag_list"=>"asdf",
 "class_start(1i)"=>"2012",
 "class_start(2i)"=>"9",
 "class_start(3i)"=>"18",
 "class_end(1i)"=>"2012",
 "class_end(2i)"=>"9",
 "class_end(3i)"=>"18",
 "effort"=>"asdf",
 "prerequisites"=>"asdf"},
 "commit"=>"Create Course"}
4

2 に答える 2

2

コースのattr_accessibleにinstitution_attributesを追加し、fields_forに適切な名前を使用する必要があります。私はそれが:institutionsではなく:institutionsであるべきだと思います。フォームは次のようになります。

<%= simple_form_for(@course) do |f| %>
  <%= f.simple_fields_for :institution do |i| %>
    <%= i.input :name %>            
  <% end %>
  <%= f.input :name %>
  <%= f.input :overview %>
  <%= f.input :cost %> 
  <%= f.input :level %>
  <%= f.input :tag_list %> 
  <%= f.input :class_start %>
  <%= f.input :class_end %>
  <%= f.input :effort %>
  <%= f.input :prerequisites %>

  <%= f.button :submit %>
<% end %>
于 2012-09-18T07:05:24.137 に答える
0

コントローラーに機関を「構築」しましたか?

含めてみてください:

@course.build_institution

CoursesController で

于 2013-09-29T07:28:37.277 に答える