0

我有一个自定义方法购买内部订单控制器

我用以下声明了一条特殊路线:这是 sell_order_path

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

这是我的表单标签

<%= form_tag(buy_order_path(@symbol)) do %>
<%= hidden_field_tag :stock_price, '55' %>
<%= label_tag :stock_quantity, 'Buy Quantity' %>
<%= text_field_tag :stock_quantity, params[:stock_quantity] %> 
<%= submit_tag "Buy", class: "btn" %>
<% end %>

但是,当我单击提交时,它显示 No route matches [POST] "/orders/CC3.SI/buy"

当我使用它时它工作

<%= form_tag(buy_order_path('5')) do %> 

但是,我需要一个动态的。知道怎么做吗?我有一种感觉,它是我创建路线的方式。

顺便说一句,@symbol 现在只是一个变量,而不是一个对象

4

1 回答 1

0

这就是我所做的

代替

resource :order do
  post :buy, on: :member
end

这将生成一条路线

/orders/:id/buy(.:format)

我将路线更改为

resource :order do
  post :buy, on: :collection
end

这将生成一条路线

/orders/buy(.:format)

接下来,我将符号参数插入到我的 form_tag

<%= form_tag(buy_order_path()) do %>
<%= hidden_field_tag :symbol, @symbol %>
<%= hidden_field_tag :stock_price, '55' %>
<%= label_tag :stock_quantity, 'Buy Quantity' %>
<%= text_field_tag :stock_quantity, params[:stock_quantity] %> 
<%= submit_tag "Buy", class: "btn" %>
<% end %>

上面的工作,但是我不确定这是否是最好的方法,因为用户可能能够看到隐藏的字段标签并编辑 html 值。有没有更好的方法将值传递给控制器​​?

于 2013-07-31T02:31:50.090 回答