导轨,具有多个参数的过滤器

Jac*_*ack 2 ruby-on-rails-4 filterrific

我正在使用最新的 ruby​​ + Rails 和 filterrific gem。它工作得很好 - 但如何在每个范围内使用多个参数呢?对于单列过滤来说很简单,但是对于下面的场景,该如何处理呢?

按邮政编码 Y 的 X 英里过滤

范围目前仅了解正在修改的值(英里或邮政编码 - 两个不同的范围),但两者都不了解对方。此过滤场景需要了解英里和邮政编码。我彻底搜索了文档并没有看到任何办法。以前有人这样做过吗?还是我遗漏了文档中隐藏的内容?

Jo *_*und 5

您可以使用 Rails 的fields_for表单助手将具有多个键和值的哈希提交到单个启用过滤器的范围:

<%= f.fields_for :with_distance do |with_distance_fields| %>
  <%= with_distance_fields.text_field :max_distance %>
  <%= with_distance_fields.text_field :city %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

然后您可以访问范围内的各种值,如下所示:

scope :with_distance, lambda { |distance_attrs|
  # `distance_attrs` is a hash with two keys:
  # {
  #   :max_distance => '10',
  #   :city => 'Vancouver',
  # }
  where(...)
}
Run Code Online (Sandbox Code Playgroud)

这是使用 Filterrific 1.4.2 和 Rails 4.1 进行测试的