Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 太阳黑子solr搜索只能从一页开始工作?_Ruby On Rails 3_Search_Sunspot_Sunspot Rails - Fatal编程技术网

Ruby on rails 3 太阳黑子solr搜索只能从一页开始工作?

Ruby on rails 3 太阳黑子solr搜索只能从一页开始工作?,ruby-on-rails-3,search,sunspot,sunspot-rails,Ruby On Rails 3,Search,Sunspot,Sunspot Rails,我遵循这里提到的指示 然而,它似乎对我不起作用。我正在尝试实现一个类似twitter的搜索功能,其中搜索栏位于导航栏的顶部,用户可以通过应用程序中的任何页面进行搜索,并将其带到搜索结果页面 当我在帖子主页(views/posts/index.html.erb)的浏览器中传递搜索查询时 它返回所需的搜索结果。但是,当我在应用程序的其他页面中尝试搜索时,它会在地址栏中形成URL,如下面提到的地址栏中所示,并且从不通过视图/布局/application.html.erb页面中声明的顶部导航栏中的搜索框

我遵循这里提到的指示

然而,它似乎对我不起作用。我正在尝试实现一个类似twitter的搜索功能,其中搜索栏位于导航栏的顶部,用户可以通过应用程序中的任何页面进行搜索,并将其带到搜索结果页面

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

它返回所需的搜索结果。但是,当我在应用程序的其他页面中尝试搜索时,它会在地址栏中形成URL,如下面提到的地址栏中所示,并且从不通过视图/布局/application.html.erb页面中声明的顶部导航栏中的搜索框进行搜索

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 
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
 <%= 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 %> 
我的控制器-发布\u Controller.rb

searchable do
    text :title, :tag_list 
  end 
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
 <%= 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 %> 
查看-布局/应用程序.rb

searchable do
    text :title, :tag_list 
  end 
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
 <%= 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 %> 
:get do%>
“span2搜索查询”,:style=>'宽度:200px'>
无,:类=>“btn”%>

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

喜爱的控制器用户控制器

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

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

            return
       end

你可能想看看这个railscasts视频-谢谢David。我以前看过这段视频,它没有提到让整个网站都可以访问搜索的方法。