首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强参数和POSTing:“字符串不受约束的方法允许”

强参数和POSTing:“字符串不受约束的方法允许”
EN

Stack Overflow用户
提问于 2015-02-13 10:09:02
回答 1查看 91关注 0票数 0

我正在制作一个简单的基本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,其内容如下:

代码语言:javascript
复制
Movie.create(params.require(:title).permit(:genre, :rating, :bluray))
redirect_to(index)

问题出在这里!提交表单使我获得了错误未定义的方法“”的“Vertigo”:String。

在错误页面上,我可以看到参数以散列的形式发布,就像您所期望的那样:

代码语言:javascript
复制
{"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一起服务。

我的表格是

代码语言:javascript
复制
<%= 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 %>
EN

回答 1

Stack Overflow用户

发布于 2015-02-13 10:11:29

首先,重新构建表单,使其使用form_for

代码语言:javascript
复制
<%= 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 %>

然后,在您的控制器中:

代码语言:javascript
复制
Movie.create(params.require(:movie).permit(:title, :genre, :rating, :bluray))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28497086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档