Rails3用选择下拉列表替换搜索框

Jen*_*unt 0 ruby-on-rails ruby-on-rails-3

有没有办法用rails3搜索功能中的select替换text_field_tag?

我目前的搜索表单:

<%= form_tag orders_path, :method => 'get', :id => "orders_search" do %>
<p><%= text_field_tag :search, params[:search] %>
    <%= submit_tag "Search", :name => nil %></p>
Run Code Online (Sandbox Code Playgroud)

我想用下拉列表替换以限制/过滤我的客户结果.我试过这个:

    <%= select :search, params[:search], ([["Pending"], ["Open"], ["Closed"]]) %>       
Run Code Online (Sandbox Code Playgroud)

但是这会在日志中给出500错误和输出:

TypeError (expected Array (got String) for param `search'):
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

    <%= select :search, ([["Pending"], ["Open"], ["Closed]]) %>     
Run Code Online (Sandbox Code Playgroud)

这会导致参数数量无效.

最好的方法是什么?

Kru*_*ule 6

检查Ruby on Rails中的选择辅助方法.

你可以做你需要的事情:

<%= select_tag "search", options_for_select([ "Pending", "Open", "Closed" ], params[:search]) %>  
Run Code Online (Sandbox Code Playgroud)

- 编辑 -

要在application.js中提交表单,请选择添加以下内容(如果您使用jQuery):

$(document).ready(function() {

  $("select#search").change(function(){
    $(this).closest("form").submit();
  });

});
Run Code Online (Sandbox Code Playgroud)

关于此,已经有很少的堆栈溢出答案.