2013-07-31 73 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值。有沒有更好的方式將價值傳遞給控制器​​?