使用pg_search跟踪搜索表单

问题描述 投票:0回答:1

在这里,我想为不同的模型User&Post提供一个搜索表单

结果应该在不同的部分视图中看到。

搜索控制器就像

class SearchController < ApplicationController
  def index
    @users = User.search(params[:query])
    @posts = Post.search(params[:query])
  end
end 

这样我就可以使用partial来查看用户和帖子的结果

我正在使用pg_search,所以模型就像

class User < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search, :against => [:name]
end


class Post < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search, :against => [:content]
end

我的问题是如何获得:查询表单搜索表单?并将:查询传递给搜索控制器?

  <%= form_tag(XXXXX_path, method: "get") do %>
    <%= text_field_tag :search, nil, placeholder: "Search ...", class: "form-control" %>
    <%= submit_tag "", style: "display: none;" %>
  <% end %>

什么是XXXXX应该在上面的代码上使控制器得到:查询?因为我不想要另一个搜索模型

或者有没有其他方式来搜索表单?

ruby-on-rails search pg-search
1个回答
0
投票

这取决于你想要什么XXXXX被称为。我建议把它叫做search_path。虽然要将:query传递给控制器​​,但您必须进行一些更改。

在你的routes.rb文件中你可以有类似的东西(根据你的代码查看链接以获得额外的路由需求):

get '/search' => 'search#index'

在您的视图中,您将该参数命名为:search,这没关系,但在您的控制器中,您必须引用params[:search]才能使其可用。

如果你想让param被称为:query你必须改变text_field_tag来匹配。

© www.soinside.com 2019 - 2024. All rights reserved.