首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4,Lupa:用OR链接

Rails 4,Lupa:用OR链接
EN

Stack Overflow用户
提问于 2015-10-30 02:06:06
回答 1查看 39关注 0票数 0

我使用卢帕进行过滤(Lupa是独立于框架的,易于测试,与has_scope比较好,等等)。

如何在Lupa中使用OR逻辑来链接作用域?当参数提前知道时,工作得很好,而当过滤器是由用户确定的时,则不是这样。

也许解决方案是在文档的dates_between部分,但我似乎找不出答案。

我有一个表单,允许用户选择动物的性别--男性,女性--使用复选框。我希望用户能够检查其中一个,另一个,或两者,并返回直观的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-30 18:05:21

卢帕的博客 (@edelpero)把我推到了正确的方向,但我觉得要么我误解了什么,要么文档可能会改进(可能是前者)。也许下面是一些类型的-o,因为我正在从一个应用程序中简化,但是这里有一个解决方案:

表格

代码语言:javascript
复制
= form_tag pups_path, method: :get do
  = check_box_tag      'male',   'm'
  = check_box_tag      'female', 'f'
  # add a hidden field so that the gender method in the scope class is called
  = hidden_field_tag   'gender', 'anything' # tag must have a value
= submit_tag :search

控制器

代码语言:javascript
复制
class PupsController < ApplicationController

def index
  @pups = PupSearch.new(Pup.all).search(search_params)
end

protected
    def search_params
      params.permit(:male, :female, :gender) # permit all three 
    end

end

作用域类

代码语言:javascript
复制
class WalkSearch < Lupa::Search

  class Scope
    def male
      # leave blank to avoid chaining; handled in gender below
    end

    def female
      # leave blank to avoid chaining; handled in gender below
    end

    def gender
      # standard procedure for OR logic
      scope.joins(:pup).where('pups.male_female' => [
        search_attributes[:male],
        search_attributes[:female]
      ])
    end
  end

end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33427644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档