【问题标题】:rails search form with pg_search使用 pg_search 的 rails 搜索表单
【发布时间】:2018-01-03 22:43:52
【问题描述】:

在这里,我想为不同型号的用户和帖子提供一个搜索表单

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

搜索控制器就像

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

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

我用的是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

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

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

上面的代码应该是什么 XXXXX 才能让控制器得到 :query?因为我不想有另一个搜索模型

或者有没有其他方法可以有搜索表单?

【问题讨论】:

    标签: ruby-on-rails search pg-search


    【解决方案1】:

    这取决于您希望调用 XXXXX 的内容。我建议将其称为search_path。您必须进行一些更改才能将 :query 传递给您的控制器。

    在您的 routes.rb 文件中,您可能会有类似的内容(查看链接以了解基于您的代码的其他路由需求):

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

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

    如果您希望将参数称为 :query,则必须更改 text_field_tag 以匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2015-08-24
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多