0

我的select_tagRails 3 应用程序中有一个表单。当我选择一个假期并提交表单时,我想被路由到show我的vacations_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 路由的输出:

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

我从以前的答案中知道,我只是没有按预期在 URL 中传递 ID。如果我提出参数,我的 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 并基于 select 选项构建 url,这样您就可以按照自己喜欢的方式构建 url。

于 2012-06-27T15:27:41.240 回答