我在订单控制器
中有自定义方法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
答案 0 :(得分: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
移到了表单中的隐藏字段。