我有两个过滤器用于检查我的 Rails 模型,称为 Items。如果启用了两个过滤器,即:传递了某些参数,那么它会根据第一个过滤器过滤项目,然后应该使用第一个过滤器的结果作为从第二个过滤器过滤的基础。但它不喜欢我在传递给我的视图的@items 的实例变量上调用 .where 吗?有什么想法吗?
错误是:# 的未定义方法“where”
代码:
@coasters = Coaster.all
if params[:type]
type = params[:type]
if type == 'powered'
@coasters = @coasters.where("style = ?", "powered")
else
@coasters = @coasters.where("material LIKE ?", params[:type])
end
end
if params[:letters]
letters = params[:letters]
if letters == '#'
@coasters = @coasters.all.select { |r| /^[0-9].*/ =~ r.name }
else
letters = letters.split('-')
lettersLower = (letters[0]..letters[1]).to_a
lettersUpper = (letters[0].upcase..letters[1].upcase).to_a
letters = lettersLower.concat(lettersUpper)
conditions = (letters.map{ |letter| " name ILIKE '#{letter}%' " }.join('OR'))
@coasters = @coasters.where(conditions)
end
end