3

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

  1. ID
  2. 銘柄記号
4

1 に答える 1

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

リソース メンバー アクションにルーティングする場合、URL ヘルパーに適切なオブジェクト ID を渡す必要があるため、エラーが発生します。また、stock_symbolフォーム内の隠しフィールドに移動しました。

于 2013-07-30T14:21:58.127 に答える