rails form_tag url path

loo*_*obs 7 forms ruby-on-rails

这似乎应该是如此简单,但它一直在给我带来问题.

我有一个从模型中提取的select_tag.我想要的是让一个人从下拉菜单中选择他们的位置,按提交并将其带到那个地方页面.

这就是我所拥有的

<% form_tag installation_path do %>
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %>
<div id="button">
  <p>
    <%= submit_tag "Go", :name => nil %>
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

问题是它当然想要一个,:id但它不会:id从下面的下拉菜单中拉出来.

我做错了什么,以及"正确"的方式做任何其他建议.

谢谢

Max*_*yak 6

看起来你真的想要GET,而不是POST params.

form_tag installation_path, :method => :get do
Run Code Online (Sandbox Code Playgroud)

  • 这是事情,您想提交表单,然后转到`/ installations /:id`.相反,你最终会进入`/ installations?id =:id`.所以你可以给Rails一个路线`match'/ installations',:to =>'installations#show'`.该路由的问题是 - 它与索引冲突.所以你应该有一个特殊的路线:`match'/ goto_installation'=>'installations#show',:as =>'goto_installation'.然后在你的表单中:`form_tag goto_installation_path,:method =>:get do`.然后在你的控制器的过滤器之前你可以`redirect_to installation_path(:id => params [:id])`来获得所需的url. (3认同)