带有自定义 url 的表单不断提交给 Create 方法
Form with custom url keeps submitting to Create method
我正在尝试构建一个将一些参数传递给控制器的简单表单。
这是我拥有的:
<%= form_tag({url: order_pizza_path}, method: :post) do %>
<%= hidden_field_tag :id, value: 0, name:"tag-1" %>
<!-- hidden field is then filled in with js -->
<%= submit_tag "Submit" %>
<% end %>
<!-- routes: -->
get 'pizza/new' => 'pizza#new', as: 'new_pizza'
post 'pizza' => 'pizza#create', as: 'create_pizza'
post 'order_pizza' => 'pizza#order', as: 'order_pizza'
但是当我提交时,它一直试图指向我的 Pizza 控制器中的 Create
方法。我不断收到以下错误:
ActionController::ParameterMissing in PizzaController#create
param is missing or the value is empty: pizza
表单的 url 是 /pizza
。这是错误的url:/pizza?method=get&url=%2Forder_pizza
即使我将其更改为 GET 请求而不是 POST,也会发生这种情况。为什么我的浏览器一直尝试转到 Create
方法?
正确的语法是
form_tag(order_pizza_path, method: :post)
没有
form_tag({url: order_pizza_path}, method: :post)
{url: order_pizza_path}
不是有效的 url_for_options
,因此 form_tag
将提交给默认值,即 create
操作。
url_for_options
的有效值为
{action: 'order'}
我正在尝试构建一个将一些参数传递给控制器的简单表单。
这是我拥有的:
<%= form_tag({url: order_pizza_path}, method: :post) do %>
<%= hidden_field_tag :id, value: 0, name:"tag-1" %>
<!-- hidden field is then filled in with js -->
<%= submit_tag "Submit" %>
<% end %>
<!-- routes: -->
get 'pizza/new' => 'pizza#new', as: 'new_pizza'
post 'pizza' => 'pizza#create', as: 'create_pizza'
post 'order_pizza' => 'pizza#order', as: 'order_pizza'
但是当我提交时,它一直试图指向我的 Pizza 控制器中的 Create
方法。我不断收到以下错误:
ActionController::ParameterMissing in PizzaController#create
param is missing or the value is empty: pizza
表单的 url 是 /pizza
。这是错误的url:/pizza?method=get&url=%2Forder_pizza
即使我将其更改为 GET 请求而不是 POST,也会发生这种情况。为什么我的浏览器一直尝试转到 Create
方法?
正确的语法是
form_tag(order_pizza_path, method: :post)
没有
form_tag({url: order_pizza_path}, method: :post)
{url: order_pizza_path}
不是有效的 url_for_options
,因此 form_tag
将提交给默认值,即 create
操作。
url_for_options
的有效值为
{action: 'order'}