我有一个Rails应用程序,在erb代码中,我使用了一个选择框。我想要做的是重新加载通过sort参数的页面。我的控制器已经处理过它,但我不知道如何使用选择框中的选定值重新加载页面。这是我的代码:
<% @options = {:latest => 'lastest' , :alphabetical => 'alphabetical', :pricelow => 'price-low', :pricehigh =>'pricehigh'} %>
<%= select_tag 'sort[]', options_for_select(@options), :include_blank => true,:onchange => "location.reload('location?sort='+this.value)"%>
答案 0 :(得分:3)
您是否考虑在列表框中使用ajax调用?如果你的控制器上有一个方法只返回排序列表,基于sort参数,你可以这样做:
<% @options = {:latest => 'lastest' , :alphabetical => 'alphabetical', :pricelow => 'price-low', :pricehigh =>'pricehigh'} %>
<%= select_tag 'sort[]', options_for_select(@options), :include_blank => true,:onchange => remote_function(:url => {:controller => 'your_controller', :action => 'list_sort_method'}, :with => "'sort='+this.value", :update => "div_containing_list") %>
答案 1 :(得分:2)
如果您不想使用AJAX,请在代码周围添加一个form_tag。
查看http://redmine.rubyforge.org/svn/trunk上的Redmine源代码。 UsersController做了类似的事情 - 有一个允许过滤器的组合框。选择组合会重新加载页面。