您好 我以前曾问过类似的问题,但从未解决过。所以我再试一次。
这似乎应该如此简单。我还没有使用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。我只是不知道如何正确地路由这个。看起来这不应该那么困难。
任何帮助都会很棒。感谢。
答案 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 %>
...