params的正确语法是什么?

时间:2014-07-26 00:14:10

标签: ruby-on-rails

根据this rails guide,您可以使用与模板中的html值相关联的params来关键name

&#34;提交表单时,名称将与表单数据一起传递,并将使用用户为该字段输入的值进入控制器中的params哈希。例如,如果表单包含&lt;%= text_field_tag(:query)%&gt;,那么您将能够使用params [:query]&#34; <获取控制器中此字段的值/ p>

但是,当我尝试访问我提交的param时会抛出以下错误:

enter image description here

我知道除了以外还有其他的参数:名字,但我只是试图在传递其他之前将此处理。我正在制作这个应用程序来练习基础知识。

另外,为什么我的params在我的URL中被传递?这些是表格,不应该作为POST请求提交,从而能够使用强参数吗?我认为我遇到这么多麻烦的原因是因为我习惯了强大的参数,我对这种语法不熟悉。感谢任何帮助,谢谢!

这是我的代码:

控制器:

class OrdersController < ApplicationController
  def create
    Order.create(params[:name])
  end
end

查看

<h1> Input information </h1>
<%= form_tag("/order",method: "get") %>
<%= label_tag(:name, "Enter name") %>
<%= text_field_tag(:name) %>
<%= label_tag(:email, "enter email") %>
<%= text_field_tag(:email) %>
<h2> Select color </h2>
<%= label_tag(:red,"red") %>
<%= check_box_tag(:red) %>
<%= label_tag(:green,"green") %>
<%= check_box_tag(:green) %>
<%= label_tag(:indigo,"Indigo") %>
<%= check_box_tag(:indigo) %>
<%= submit_tag("submit") %>

1 个答案:

答案 0 :(得分:2)

您需要向create提供哈希参数。 Order将如何知道您正在设置name?你基本上是这样做的:

Order.create('phoot')

您需要指定phoot是什么:

Order.create(name: params[:name])
# ends up being Order.create(name: 'phoot')