根据this rails guide,您可以使用与模板中的html值相关联的params
来关键name
,
&#34;提交表单时,名称将与表单数据一起传递,并将使用用户为该字段输入的值进入控制器中的params哈希。例如,如果表单包含&lt;%= text_field_tag(:query)%&gt;,那么您将能够使用params [:query]&#34; <获取控制器中此字段的值/ p>
但是,当我尝试访问我提交的param时会抛出以下错误:
我知道除了以外还有其他的参数:名字,但我只是试图在传递其他之前将此处理。我正在制作这个应用程序来练习基础知识。
另外,为什么我的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") %>
答案 0 :(得分:2)
您需要向create
提供哈希参数。 Order
将如何知道您正在设置name
?你基本上是这样做的:
Order.create('phoot')
您需要指定phoot
是什么:
Order.create(name: params[:name])
# ends up being Order.create(name: 'phoot')