Filterrific,没有参数和复选框的范围
Filterrific, scope without argument and check boxes
我正在使用 filterrific,发现它非常适合与 draper 装饰器等集成。
但是我想用一个没有参数的范围做一个简单的请求。
想象一个像 scope :unassigned, -> { where(support_user: nil)}
这样的模型范围。然后你可以做 Ticket.unassigned
来执行查询。
如何将这个无参数范围与 filterrific 集成?例如,带有 "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
并且想制作一个调用 Ticket.wait
的过滤器,这怎么可能?
谢谢!
像这样使用复选框:
<%= 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)
}
我对 filterrific 进行了调整,使其能够承受 arity 0 和枚举请求的范围。由于 arity 没有正确显示必要参数的数量,我使用 ArgumentError 异常。
你好!我对 fiterrific 有同样的期望。我做了一个叉子。由于范围和枚举的数量没有按预期工作,我使用了 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
我正在使用 filterrific,发现它非常适合与 draper 装饰器等集成。
但是我想用一个没有参数的范围做一个简单的请求。
想象一个像 scope :unassigned, -> { where(support_user: nil)}
这样的模型范围。然后你可以做 Ticket.unassigned
来执行查询。
如何将这个无参数范围与 filterrific 集成?例如,带有 "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
并且想制作一个调用 Ticket.wait
的过滤器,这怎么可能?
谢谢!
像这样使用复选框:
<%= 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)
}
我对 filterrific 进行了调整,使其能够承受 arity 0 和枚举请求的范围。由于 arity 没有正确显示必要参数的数量,我使用 ArgumentError 异常。 你好!我对 fiterrific 有同样的期望。我做了一个叉子。由于范围和枚举的数量没有按预期工作,我使用了 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