提交的Select_tag需要重定向到显示页面:id?

时间:2010-12-13 16:05:46

标签: ruby-on-rails routing html-select

您好 我以前曾问过类似的问题,但从未解决过。所以我再试一次。

这似乎应该如此简单。我还没有使用Rails 3 BTW。

我想要做的就是有一个下拉菜单,当一个人选择该位置并按下“go”时,他们会转到该页面。

    <% form_tag installation_path([:id]), :url => { :action => "show" }, :method => :get do %>
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %>
<%= submit_tag 'Go' %>
<% end %>

这就成了问题:http://localhost:3000/installations/id?id=1&commit=Create。它找不到:id。我只是不知道如何正确地路由这个。看起来这不应该那么困难。

任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:0)

我认为您的form_tag可能存在问题。看来你要两次定义路径。

两者

installation_path([:id])

:url => { :action => "show" }

用于生成路径,但我认为您不应该同时使用这两种路径。跟你一起去

installation_path([:id])

:url => { :controller => "installations", :action => "show", :id => id }

答案 1 :(得分:0)

您需要创建并使用新的&#34; show&#34;不基于安装ID的路由(并且不与Rails资源路由冲突),并继续将安装ID作为params对象的一部分发送到控制器的show动作中。

在routes.rb中,

get 'show_installation', to: 'installations#show'

在您看来,

<% form_tag show_installation_path, :method => :get %>
...