3

buy在订单控制器中有一个自定义方法

我已经用以下声明了一条特殊路线:sell_order_path

resources :orders do
  post 'sell', on: :member
end

这是我的表单标签

<%= form_tag(sell_order_path, :params => params.merge(:id => 5, :stock_symbol =>'test')  ) do %>
  <%= label_tag :stock_name, 'Buy Quantity' %>
  <%= text_field_tag :stock_name, params[:quantity] %> 
  <%= submit_tag "Buy", class: "btn" %>
<% end %>

当我点击提交按钮时,它说

No route matches {:controller=>"orders", :action=>"sell"} missing required keys: [:id]

知道为什么吗?我需要将总共 3 个参数传递给我的orders#sell

  1. ID
  2. stock_symbol
  3. 数量
4

1 回答 1

2

尝试这个:

<%= form_tag(sell_order_path(5)) do %>
  <%= hidden_field_tag :stock_symbol, 'test' %>
  <%= label_tag :stock_name, 'Buy Quantity' %>
  <%= text_field_tag :stock_name, params[:quantity] %> 
  <%= submit_tag "Buy", class: "btn" %>
<% end %>

发生错误是因为如果它路由到资源成员操作,您需要将适当的对象 ID 传递给您的 url 助手。另外,我移到stock_symbol了表单中的隐藏字段。

于 2013-07-30T14:21:58.127 回答