太阳黑子solr搜索仅适用于一页?

时间:2013-04-09 21:59:24

标签: ruby-on-rails-3 search sunspot sunspot-rails

我按照此处提到的说明Rails 3: sunspot solr : adding search ability for every page

但它似乎对我不起作用。我正在尝试实现类似Twitter的搜索功能,其中搜索栏位于导航栏的顶部,人们可以搜索应用程序中的任何页面,并将它们带到搜索结果页面。

当我在帖子主页(views / posts / index.html.erb)中在浏览器中传递搜索查询时

http://localhost:3000/post?utf8=%E2%9C%93&search=test&commit=Search

返回所需的搜索结果。但是,当我在应用程序的其他页面中并尝试在地址栏中搜索表单URL时,如下所述,并且永远不会通过在views / layouts /中声明的顶部导航栏中的搜索框进行搜索application.html.erb page。

http://localhost:3000/users/1/following?utf8=%E2%9C%93&search=test&commit=Search

http://localhost:3000/posts/1/favorite?utf8=%E2%9C%93&search=test&commit=Search

以下是详细信息: -

我的模特 的 post.rb

searchable do
    text :title, :tag_list 
  end 

我的控制器 - posts_controller.rb

def index


      if params[:search]

        @search = Post.search do
          fulltext params[:search]
          paginate :page => params[:page], :per_page => 5        
        end

        @posts = @search.results
      else

              @posts = @posts.plusminus_tally({:order => "vote_count ASC"}).page(params[:page]).per(6)   

       end

      respond_to do |format|
        format.html 
        format.json { render json: @posts}
      end
  end

查看 - layouts / application.rb

 <%= form_tag posts_path, :method => :get do %>
                    <div class="input-append">
                      <%= text_field_tag :search, params[:search] , :class => "span2 search-query", :style => 'width:200px' %>
                      <%= submit_tag "Search", :post => nil , :class => "btn" %>
                    </div>  
                  <% end %> 

1 个答案:

答案 0 :(得分:0)

我终于弄明白了。这需要在当前页面的每个控制器上调用,以将搜索帖子重定向到其搜索结果页面(在本例中为Posts #index)

最喜欢的控制器&amp; 用户控制器

 if params[:search]
             search_param = CGI::escapeHTML(params[:search])    

             redirect_to ("/posts?search=#{search_param}&commit=Search") 

            return
       end