2012-03-26 36 views
0

我一直在使用solr搜索,現在我通過will_paginate寶石添加分頁。加載初始頁面與網頁底部的分頁鏈接正常工作並正常工作,但是當我通過Solr進行搜索時,分頁鏈接不會更新。它始終爲非搜索加載155個分頁鏈接,而最多爲2個分頁鏈接進行搜索。它們保留了初始頁面加載的舊鏈接。如何更新分頁鏈接,如果他們不刷新Solr搜索請求?

books.rb:

def self.search(query,page) 
    search = Sunspot.search(Book) do 
     keywords query 
     paginate :page => page, :per_page => 10 
    end 
    search.results 
    end 

books_controller.rb:

def index 
    if params[:query] && !params[:query].blank? 
     @books = Book.search(params[:query],:page => params[:page]) 
    else 
     @books = Book.order_by(:title).paginate(:page => params[:page], :per_page => 10) 
    end 
    end 

index.html.erb:

<%= form_tag books_path, :method => :get, :remote => true, :id => "book_search" do %> 
    <div><%= label_tag :query, "Search" %> <%= text_field_tag "query", "" %></div> 
    <div><%= submit_tag "Find", :class => "" %></div> 
    <% end %> 
    <div><%= will_paginate @books %></div> 

我已經安裝了will_paginatesunspot寶石兩者。

感謝

回答

0

首先,可以縮短線路

if params[:query] && !params[:query].blank? 

逼到

if params[:query].present? 

,因爲這將完成同樣的事情。

你確定你打的是正確的代碼分支,但沒有運行Book.order_by?你確定你正在用page參數的不同值進行測試嗎?

+0

我很確定我沒有運行'Book.order_by'這一行,因爲它會加載一個巨大的列表,而'Book.search'只會加載一些項目。它始終顯示相同的155分頁鏈接,而最多隻有2個分頁鏈接。感謝您使用'present?' – Goalie 2012-03-26 20:21:56

+0

的提示,問題不在於分頁鏈接不工作,而在於您獲得的結果比預期的要多。在這種情況下,您可能必須經過「用戶」模型搜索設置,以便查看獲取索引的內容以及示例查詢。即使那樣,沒有你的數據集,也很難知道你爲什麼會得到超過預期的數據。 – cpjolicoeur 2012-03-26 20:23:55

+0

這是我得到更多的結果,它的分頁鏈接搜索後不正確刷新。我將添加演示文稿代碼。謝謝 – Goalie 2012-03-26 21:37:32