我的应用程序标题中有一个搜索表单,我想使用这个搜索表单来搜索应用程序中的多个模型.
例如像/ search?q = rails这样的请求可以通过Work,Project,User及其定义的属性等多个模型来触发搜索.我想使用Ransack,因为我已经在应用程序的不同区域使用了Work模型.
我想我不太明白Ransack,而且文档总是指出你必须定义@q = MyModel.search(params [:q]),以@@的形式使用它.有没有一种方法可以提前定义一个特定的模型?并传入参数名称,如search_form_for:q?
解决方法
好的,在提出问题后,答案突然出现在我的脑海里.
而不是search_form_for帮助器,我现在只需要使用form_tag帮助器,方法如下:
<%= form_tag search_path,method: :get do %> <%= text_field_tag :q,nil %> <%= end %>
在搜索动作中我只是做:
q = params[:q] @works = Work.search(name_cont: q).result @projects = Project.search(name_cont: q).result @users = User.search(name_cont: q).result
这对我有用我希望这也能帮助别人.