我想实现跨多个模型的搜索。
找到了这个stackoverflow question here,它使用了ransack并立即进行了尝试。但我似乎无法使其正常工作。
在我的控制器中:
def search
@quotes = Quote.search(title_cont: q).result
@books = Book.search(title_cont: q).result
@users = User.search(username_cont: q).result
end
路线
get '/search', to: 'application#search'
视图
<%= form_tag search_path, method: :get do %>
<%= f.label :title_cont %>
<%= f.search_field :title_cont %>
<%= text_field_tag :q, nil %>
<% end %>
答案 0 :(得分:0)
您应该使用params[:q]
而不是q
。这应该起作用
def search
@quotes = Quote.search(title_cont: params[:q]).result
@books = Book.search(title_cont: params[:q]).result
@users = User.search(username_cont: params[:q]).result
end
此外,f.label和f.search_field
不适用于form_tag
。您应该改用label_tag
和search_field_tag
<%= form_tag search_path, method: :get do %>
<%= label_tag :title_cont %>
<%= search_field_tag :title_cont %>
<%= text_field_tag :q, nil %>
<% end %>
答案 1 :(得分:0)
为什么您的搜索表单中有两个字段,所以您应该只有一个搜索字段。
<%= form_tag search_path, method: :get do %>
<%= label_tag :title_cont %>
<%= search_field_tag :q %>
<% end %>