これらは、コードコントローラでコントローラの関数を作成する二つの別々のparamsに
<p>
<% form_for @movie do |m| %>
<%= m.label :title, 'Title' %>:
<%= m.text_field :title %></br>
<%= m.label :release_year, 'Release Year' %>:
<%= m.select :release_year, (1900..2011) %></br>
</br>
<% Movie.genres.each do |genre| %>
<%=h genre %>
<%= check_box_tag :genre, genre %></br>
<% end%>
</br>
<%= m.submit "Save" %>
<% end %>
</p>
と私のコードです:
def create
@movie = Movie.new(params[:movie].merge(:genre))
if @movie.save!
render show_path
else
render new_path
end
しかし、何らかの理由で、私は未定義」というエラーメッセージを取得しておきますメソッド `each_pair 'for:genre:Symbol"または "IDなしのムービーを見つけることができません"。それは適切に保存されていません。
私の提出書式はムービー形式のみですので| m |それともコントローラの作成機能が間違っているからですか?
ありがとうございました。
ありがとう!それはうまくいった。なぜそれが説明できますか?ありがとう! – noob
これは、Hash#mergeが別のハッシュを引数として期待し、基本的に文字列で#each_pairメソッドを持たないシンボルを渡すためです。メソッド(:a => b)メソッド({:a => b})として自動的に解析されます - 引数はハッシュ – keymone
ああです。どうもありがとう! – noob