我正在尝试显示其中一个字段中具有特定值的记录。
控制器
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
但它不起作用。没有抛出错误,但我的前端网页上没有显示任何记录。我也尝试了不同的变化,但仍然没有运气。对此有任何帮助将非常感激。
答案 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