0

select_tagRails 3 アプリ内にフォームがあります。休暇を選択してフォームを送信するとshowvacations_controller. 私のフォームのコードは次のとおりです。

<%= form_tag url_for(:controller => "vacations", :action => "show"), :method => 'get', :id => "song_selector" do %>
  <%= select_tag "vacation_id", options_for_select([["Choose your vacation", ""]]+ Vacation.active.collect {|vacation| [ vacation.title, vacation.id ] } ) %>
<% end %>

ただし、それを試みると、エラーが発生します。

No route matches {:controller=>"vacations", :action=>"show"}

私は間違いなくこれのためのルートを持っています:

resources :vacations, :only => [:index, :show]

そして rake routes の出力:

vacation       GET       /vacations/:id(.:format)       vacations#show

以前の回答から、期待どおりに URL に ID を渡していないことがわかりました。params を上げると、ID が次のような文字列として渡されているように見えます: `"vacations" => "2".

だから私は疑問に思っています:これが修正されるように、select_tagをどのように構築できますか?

4

1 に答える 1

0

そのアクションにIDがありません。

試す:

<%= select_tag "id", options_for_select([["Choose your vacation", ""]]+ Vacation.active.collect {|vacation| [ vacation.title, vacation.id ] } ) %>

しかし、URL は「/vacations/?id=X」のようなものになる可能性が高いため、これも理想的ではありません。

別の方法として、javascript を使用し、選択オプションに基づいて URL を作成する方法があります。これにより、好きな方法で URL を作成できます。

于 2012-06-27T15:27:41.240 に答える