我们时常会做这么样的组合过滤功能:
像上面这个才 4 的,有的时候甚至有 7,8 种,当你做好功能以后你会发现你的 View 和 Controller 里面会很复杂,尤其是 Controller 里面。 这个时候,你需要 meta_search 这个 Gem
https://github.com/ernie/meta_search
它可以帮你自动组合多种不同的条件
比如这样:
app/controllers/articles_controller.rb
def index
@search = Article.search(params[:search])
@articles = @search.paginate(:page => params[:page])
end
app/views/articles/index.html
<%= form_for @search, :url => articles_path, :html => {:method => :get} do |f| %>
<%= f.label :title_contains %>
<%= f.text_field :title_contains %><br />
<%= f.label :comments_created_at_greater_than, 'With comments after' %>
<%= f.datetime_select :comments_created_at_greater_than, :include_blank => true %><br />
<!-- etc... -->
<%= f.submit %>
<% end %>