我正在制作一个简单的基本CRUD应用程序,它列出了一个电影集合,并允许您编辑现有条目或添加新条目。
movie#new显示一个包含四个字段的表单:
text_field_tag(:title)text_field_tag(:genre)number_field_tag(:rating, min: 0, max: 10, step: 1)check_box_tag(:bluray)该表单提交给movie#create,其内容如下:
Movie.create(params.require(:title).permit(:genre, :rating, :bluray))
redirect_to(index)问题出在这里!提交表单使我获得了错误未定义的方法“”的“Vertigo”:String。
在错误页面上,我可以看到参数以散列的形式发布,就像您所期望的那样:
{"utf8"=>"✓",
"authenticity_token"=>"x55ibBjNoYCAfSNi3hNREvyIkMTMn7DTrI3YGqzCk0Hefvjx41vlYKDlNLSTsnNlH7cXTkXM1IUReJbKrCjI6g==",
"title"=>"Vertigo",
"genre"=>"Mystery",
"rating"=>"9",
"bluray"=>"0",
"commit"=>"Submit"}即使在谷歌上搜索过这个问题之后,这一次也在阻碍着我。显然,有些人的问题是,与其使用params散列,他们得到了一个大的params字符串,但在这里似乎并没有发生这种情况--在错误页面中包含的小的REPL中,我可以输入params[:title]并得到"Vertigo“返回。
我在Windows8.1上使用Rails 4.2.0和Ruby2.0.0-x64(请不要伤害我),与WEBrick一起服务。
我的表格是
<%= form_tag(action: 'create') do %>
<%= text_field_tag(:title) %>
<%= text_field_tag(:genre) %>
<%= number_field_tag(:rating, min: 0, max: 10, step: 1) %>
<%= check_box_tag(:bluray) %>
<%= submit_tag("Submit") %>
<% end %>发布于 2015-02-13 10:11:29
首先,重新构建表单,使其使用form_for
<%= form_for @movie do |f| %>
<%= f.text_field :title %>
<%= f.text_field :genre %>
<%= f.number_field :rating, min: 0, max: 10, step: 1
<%= f.check_box :bluray %>
<%= f.submit "Submit" %>
<% end %>然后,在您的控制器中:
Movie.create(params.require(:movie).permit(:title, :genre, :rating, :bluray))))https://stackoverflow.com/questions/28497086
复制相似问题