Rails显示具有特定字段值的数据

时间:2015-04-15 17:41:13

标签: ruby-on-rails ruby-on-rails-4

我正在尝试显示其中一个字段中具有特定值的记录。

控制器

def mini
    @gears = Gear.where("Lab like ?", "%Mini%")
  end

上面的代码显示“Lab”字段中值为“Mini”的每条记录。我现在正在努力使它显示具有两个不同值“Mini”和“Primary”的记录。因此它会向我显示所有在实验室字段中具有“迷你”或“主要”的记录。

我试过这个

def mini
    @gears = Gear.where("Lab like ? AND Lab like ?","%Mini%", "%Primary%) 
  end

但它不起作用。没有抛出错误,但我的前端网页上没有显示任何记录。我也尝试了不同的变化,但仍然没有运气。对此有任何帮助将非常感激。

2 个答案:

答案 0 :(得分:2)

您应该使用OR代替AND 使用此Gear.where("Lab like ? OR Lab like ?","%Mini%", "%Primary%)

答案 1 :(得分:0)

这是Scopes的完美用例。请参阅:http://guides.rubyonrails.org/active_record_querying.html#scopes

因此,在gear.rb模型文件中,执行以下操作:

scope :mini, -> { where(lab: 'Mini') }
scope :primary, -> { where(lab: 'Primary') }

然后在你的控制器中,你可以这样做:

@gears = Gear.mini #mini gears

@gears = Gear.primary #primary gears

@gears = Gear.mini.primary #mini and primary gears