在控制器中创建函数而不保存两个单独的参数

时间:2011-06-27 21:23:29

标签: ruby-on-rails forms tags 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':genre:Symbol”或“找不到没有ID的电影”。它没有妥善保存。

是因为我的提交表单只是电影形式| m |还是因为我在控制器中的创建功能是错误的?

感谢。

2 个答案:

答案 0 :(得分:1)

也许不是

params[:movie].merge(:genre)

你想做什么

params[:movie].merge(:genre => params[:genre])

答案 1 :(得分:0)

在Firefox中检查Firebug(如果您使用Chrome,则使用Chrome开发者工具;如果您不使用Chrome,则检查您的应用日志),并查看您的方案中实际传递了哪些参数?听起来你的代码期望接收一个实际上没有传递的参数。工具/日志应显示故障发生的位置。