2013-07-31 130 views
0

我有一个自定义的方法顺序控制器的form_tag没有路由匹配[POST]

我已经声明了以下一种特殊的路由里面买

<%= 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 %> 

然而,当我点击提交,它说没有路由匹配[POST] “/orders/CC3.SI/buy”

它在我使用时工作

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

但是,我需要一个动态的。任何想法如何?我有一种感觉,就是它是如何创建这条路线的。

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

+0

您已定义'sell_order_path'并且正在使用'buy_order_path'! – vee

+0

对不起,关于sell_order_path,编辑为buy_order路径。但是这并不能解决问题 –

+0

@symbol是如何被填充的? – yellowreign

回答

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值。有没有更好的方式将价值传递给控制器​​?