在搜查搜索过滤器中包括选定的 has_scope
Include selected has_scope on ransack search filter
我正在尝试结合使用 has_scope 和搜查。
这些组件中的每一个都可以完美地独立运行。但是,当我尝试将它们组合在一起时,它们会相互覆盖。例如,如果我 select 一个范围,结果会被适当地过滤,但是一旦我使用 search_form from ransack 进一步过滤结果,范围就会被删除。反之亦然。
如何实现?
感谢您的帮助。
请看下面我的尝试。
has_scope :upward_trending, :type => :boolean
has_scope :downward_trending, :type => :boolean
has_scope :all, :type => :boolean
def index
@has_scope = apply_scopes(Product).all
@q = @has_scope.search(params[:q])
@products = apply_scopes(@q.result.page(params[:page]).per(30))
end
有了 Ransack 的新 ransackable_scopes 功能,就不再需要 has_scope
我可以这样做:
def self.ransackable_scopes(auth_object = nil)
[:upward_trending, :downward_trending, :seven_days, :thirty_days, :six_months, :twelve_months, :all_time]
end
然后我可以根据需要在 Ransack 中调用这些范围。
所以回答这个问题,有了这个新功能,范围已经集成,我们都很好。
我正在尝试结合使用 has_scope 和搜查。
这些组件中的每一个都可以完美地独立运行。但是,当我尝试将它们组合在一起时,它们会相互覆盖。例如,如果我 select 一个范围,结果会被适当地过滤,但是一旦我使用 search_form from ransack 进一步过滤结果,范围就会被删除。反之亦然。
如何实现?
感谢您的帮助。
请看下面我的尝试。
has_scope :upward_trending, :type => :boolean
has_scope :downward_trending, :type => :boolean
has_scope :all, :type => :boolean
def index
@has_scope = apply_scopes(Product).all
@q = @has_scope.search(params[:q])
@products = apply_scopes(@q.result.page(params[:page]).per(30))
end
有了 Ransack 的新 ransackable_scopes 功能,就不再需要 has_scope
我可以这样做:
def self.ransackable_scopes(auth_object = nil)
[:upward_trending, :downward_trending, :seven_days, :thirty_days, :six_months, :twelve_months, :all_time]
end
然后我可以根据需要在 Ransack 中调用这些范围。
所以回答这个问题,有了这个新功能,范围已经集成,我们都很好。