2013-07-30 32 views
3

我有一個自定義的方法buy順序控制器內的form_tag路由缺少必需的鍵:[:ID]

我已經聲明瞭以下一種特殊的路由:這是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

回答

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移至表單內的隱藏字段。

+0

@SteveNg您應該使用rails'Logger'類或gem'pry'(通過在需要停止腳本執行的地方添加'binding.pry'並將其「重定向到」控制檯)來調試rails應用程序。 你介意接受答案,如果它有幫助嗎? –

相關問題