Activerecord 带范围kaminari分页的全文搜索

Activerecord 带范围kaminari分页的全文搜索,activerecord,ruby-on-rails-4,full-text-search,kaminari,Activerecord,Ruby On Rails 4,Full Text Search,Kaminari,我遵循了RailsCast的简单搜索表单和Heroku的全文搜索说明,正在使用pg_搜索gem 我试图在保留为索引设置的范围的同时搜索我的microposts 这是我的microposts\u controller.rb索引操作 def index #@microposts = Kaminari.paginate_array(Micropost.popular).page(params[:page]).per(25) @micropost = current_user.micr

我遵循了RailsCast的简单搜索表单和Heroku的全文搜索说明,正在使用pg_搜索gem

我试图在保留为索引设置的范围的同时搜索我的microposts

这是我的microposts\u controller.rb索引操作

def index
    #@microposts = Kaminari.paginate_array(Micropost.popular).page(params[:page]).per(25)
    @micropost  = current_user.microposts.build
    @microposts = Micropost.search(params[:query]).page params[:page]
end
注释掉的代码是我想要的范围内的代码。它可以自己工作,但不能被搜索。新分配的@MicroPost对搜索有效,但它使我的索引页失去了我为其设置的“流行”范围

这是micropost的index.html.erb

<%= form_tag microposts_path, method: :get do %>
    <%= text_field_tag :query, params[:query], placeholder: 'Search for a micropost' %>
    <%= submit_tag "Search", name: nil, class: "btn btn-lrg btn-primary" %>
<% end %>
<%= render 'shared/public_feed' %>

我不在乎搜索结果是否应用了“流行”范围,我只希望在执行搜索之前,对索引页面的初始访问具有“流行”范围。我在想,也许我可以在控制器或视图中的某个地方放置一个if语句,但似乎什么都不起作用。

为了使它起作用,我从索引操作中删除了
@microspost=microspost.search(params[:query])。page params[:page]
,并将其放入如下的搜索表单中

<%= form_tag microposts_path, method: :get do %>
    <%= text_field_tag :query, params[:query], placeholder: 'Search for a micropost' %>
    <%= submit_tag "Search", name: nil, class: "btn btn-lrg btn-primary" %>
       <% if params[:query].present? %>
          <% @microposts = Micropost.search(params[:query]).page params[:page] %>
       <% end %>
<% end %>

def self.popular
    reorder('votes desc').find_with_reputation(:votes, :all)
end
<%= form_tag microposts_path, method: :get do %>
    <%= text_field_tag :query, params[:query], placeholder: 'Search for a micropost' %>
    <%= submit_tag "Search", name: nil, class: "btn btn-lrg btn-primary" %>
       <% if params[:query].present? %>
          <% @microposts = Micropost.search(params[:query]).page params[:page] %>
       <% end %>
<% end %>