有没有办法用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>
我想用下拉列表替换以限制/过滤我的客户结果。我试过这个:
<%= select :search, params[:search], ([["Pending"], ["Open"], ["Closed"]]) %>
然而,这给了我一个500错误和日志中的输出:
TypeError (expected Array (got String) for param `search'):
我也试过了:
<%= select :search, ([["Pending"], ["Open"], ["Closed]]) %>
导致参数数量无效。
最好的方法是什么?
答案 0 :(得分:6)
检查Select helper methods in Ruby on Rails。
你可以做你需要的事情:
<%= select_tag "search", options_for_select([ "Pending", "Open", "Closed" ], params[:search]) %>
- 编辑 -
为了在你的application.js中选择添加以下内容提交表单(如果你使用jQuery):
$(document).ready(function() {
$("select#search").change(function(){
$(this).closest("form").submit();
});
});
关于此问题已经有few stack overflow answers。