我有一个搜索表单,用于查询数据库中的一个表,但有许多参数(语言,级别,创建者等)。下面的代码提供了有问题的字段,但我想将其更改为:
a)添加更多参数(有几个); b)允许字段为空
这是控制器中的代码:
@materials = Material.find(:all, :conditions => {:targ_lang => params["targ_lang"],
:inst_lang => params["inst_lang"],
:level => params["level"]})
我很害怕,但很多文档建议我应该使用“where”。
答案 0 :(得分:2)
从Rails 3开始,您可以使用where()
函数:
@materials = Material.where(targ_lang: params["targ_lang"], inst_lang: params["inst_lang"], level: params["level"])
另外,您可以查看scopes
这些允许您在模型中设置要执行的操作,并在控制器中调用它,例如:
class Material < ActiveRecord::Base
scope :active, where(active_state: true)
end
然后在控制器中执行以下操作:
@active_materials = Material.active
如果您要加入多个型号并希望保持控制器不那么混乱,这将非常有用。
总而言之,就像@RVG所说,seachlogic非常有用,还有其他像Sphinx和Elastic Search。你应该快速浏览一下这些并使用你最感到最舒服的那个。
答案 1 :(得分:1)