这些是代码
<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':genre:Symbol”或“找不到没有ID的电影”。它没有妥善保存。
是因为我的提交表单只是电影形式| m |还是因为我在控制器中的创建功能是错误的?
感谢。
答案 0 :(得分:1)
也许不是
params[:movie].merge(:genre)
你想做什么
params[:movie].merge(:genre => params[:genre])
答案 1 :(得分:0)
在Firefox中检查Firebug(如果您使用Chrome,则使用Chrome开发者工具;如果您不使用Chrome,则检查您的应用日志),并查看您的方案中实际传递了哪些参数?听起来你的代码期望接收一个实际上没有传递的参数。工具/日志应显示故障发生的位置。