Filterrific,范围不带参数和复选框

时间:2015-07-13 15:40:47

标签: ruby-on-rails filterrific

我进入了filterrific,发现它与draper装饰器的集成非常有用。

但是我想用一个没有参数的范围做一个简单的请求。

想象一下像Pet这样的模型范围。然后,您可以执行scope :unassigned, -> { where(support_user: nil)}来执行查询。

如何将此非参数范围与filterrific集成?使用"未分配"复选框例如。

编辑: 表格代码:

Ticket.unassigned

更新: 我们想念的另一个功能是使用枚举过滤器。如果我有

<%= form_for_filterrific @filterrific do |f| %>
<%= f.hidden_field( :at_and_under_node_id,class: 'filterrific-periodically-observed') %>
<%= f.label "unassigned" %>
<%= f.check_box :unassigned, class: 'filterrific-periodically-observed' %>
<%= link_to('Reset filters',reset_filterrific_url) %>
 </div>
 <%# add an automated spinner to your form when the list is refreshed %>
 <%= render_filterrific_spinner %>
<% end %>

想制作一个调用class Ticket < ActiveRecord::Base enum status: [:wait, :closed, :deleted] ... end 的过滤器,怎么可能?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用如下所示的复选框:

<%= f.check_box "unassigned", class: 'filterrific-periodically-observed' %>

确保unassigned范围存在并添加到模型中的filterrific指令中。

然后将参数传递给范围并检查值:

scope :unassigned, ->(yes_or_no) {
  return nil  if '0' == yes_or_no
  where(support_user: nil)
}

答案 1 :(得分:1)

我已经通过arity 0和enum请求支持范围的方式改编了filterrific。由于arity没有正确显示必要参数的数量,因此我使用了ArgumentError异常。 你好!我对fiterrific有同样的期望。我做了一个叉子。由于范围和枚举的arity没有按预期工作,我使用ArgumentError异常。

filterrific_available_filters.each do |filter_name|
    filter_param = filterrific_param_set.send(filter_name)
      next if filter_param.blank? # skip blank filter_params
      begin
        ar_rel = ar_rel.send(filter_name, filter_param)
      rescue ArgumentError #if we have a scope with arity 0 or enum query, we can perform the request without the parameter
        ar_rel = ar_rel.send(filter_name) if (filter_param == 1)
      end
    end
    ar_rel
end

这里有叉子: https://github.com/hachpai/filterrific