模型Cafe
有meal_available
,其boolean
类型。
搜索咖啡馆时,我想按类别重新搜索复选框:
<form action="/cafe/cafesearch" method="GET">
<label for="chk1"><input type="checkbox" id="chk1" name="meal_available" value=true>meal_available</label>
<input type="submit" value="submit">
</form>
在视图中,通过表单标记传递复选框值,在控制器中,我尝试这样:
coffee = Cafe.all
if params[:meal_available] == true
@cafe = coffee.delete_if{|x| x.meal_available == false}
end
它没有用。如何删除数组中的模型列?
答案 0 :(得分:1)
您可以在咖啡馆模型中放入一个范围,以便为咖啡馆提供meal_available,有关ActiveRecord范围的更多信息here
在咖啡馆模型中:
class Cafe < ActiveRecord::Base
scope :meals_available, -> { where(meal_available: true) }
end
在控制器中:
@cafes = Cafe.meals_available
就是这样,谢谢。
答案 1 :(得分:0)
您只能使用ActiveRecord
方法:
if params[:meal_available] == true
@cafe = Cafe.where(meal_available: false)
end
在这种情况下,coffee = Cafe.all
是多余的。
coffee = Cafe.all
if params[:meal_available] == true
@cafe = coffee.select { |x| x.meal_available == false }
end