我有个人资料模型和出版物模型。
class Profile < ActiveRecord::Base
has_many :publications
end
class Publication < ActiveRecord::Base
belongs_to :profile
end
我正在使用Ransack gem对我的个人资料模型执行搜索:
class ProfilesController < ApplicationController
def index
@search = Profile.search(params[:q])
@profiles = @search.result
end
end
简档/ index.html.erb
<%= search_form_for @search do |f| %>
<%= f.label :name_cont, "Search term:" %>
<%= f.text_field :name_cont %>
<% end %>
这可以按预期工作。
我使用相同的表单对相关的发布模型执行搜索。
根据Ransack's documentation,我可以这样做:
class ProfilesController < ApplicationController
def index
@search = Profile.search(params[:q]).includes(:publications)
@profiles = @search.result
end
end
<%= search_form_for @search do |f| %>
<%= f.label :publications_title_cont, "Search term:" %>
<%= f.text_field :publications_title_cont %>
<% end %>
这也有效。
我的问题:是否可以合并两个文本字段?我想从同一文本字段中搜索Profile模型和Publication模型。
我试过了:
<%= search_form_for @search do |f| %>
<%= f.label :name_cont_or_publications_title_cont, "Search term:" %>
<%= f.text_field :name_cont_or_publications_title_cont %>
<% end %>
但是这给了我以下错误:
undefined method `name_cont_or_publications_title_cont' for #<Ransack::Search:0x007f7688db1b80>
我错过了什么?
答案 0 :(得分:2)
从内存中我认为你只需要在最后设置后缀,因为你无论如何都不能组合不同的后缀:
<%= f.text_field :name_or_publications_title_cont %>