2012-04-11 10 views
0

したがって、私はKaminariページ配列を返す検索フォームを持っています。最初のページは常に結果のリストを返しますが、後続のすべてのページリンクの「取得」は結果を返しません。理由はわかりません!ここで検索フォームの結果のページ番号は、後続のページ(Kaminari + Rails)には何も返しません。

は私のコントローラ

def writer_search 
    @writers = Kaminari.paginate_array(@results).page(params[:page]).per(10) 
end 

def writer_search_submit 
    @results = #my big array of results, this part works fine 
    @writers = Kaminari.paginate_array(@results).page(params[:page]).per(10) 
    render 'writer_search' 
end 

コードの表示

=form_tag(writer_search_submit_path, :method => 'post') do 
    %input{:name => 'keywords', :id => 'keywords', :value => params[:keywords]} 
    = submit_tag "Search" 

- @writers.each do |writer| 
    #show the results 

= paginate @writers 

サーバーログページネーションリンクをクリック

Started GET "/editors/writer_search?commit=Search&keywords=business&page=2" 
    Processing by EditorsController#writer_search as HTML 
    Parameters: {"commit"=>"Search", "keywords"=>"business", "page"=>"2", "utf8"=>"✓"} 
の私の検索方法です

最初のレンダリングされたページには、私の配列の最初の10個の結果があります(この場合、何百もの結果があります)。いずれかのページネーションリンクをクリックすると、GETが行われ、結果のないページが返されます。

アイデア?

答えて

3

@resultswriter_search_submitで定義されていますが、writer_searchでは定義されていません。

"/editors/writer_search?commit=Search&keywords=business&page=2"へのGETリクエストは、EditorsController#writer_searchになります。ここで、@resultsは未定義です(結果がないページが表示されます)。

更新:(おかげでティロ)

おそらく、あなたがそれを必要とするすべてのアクションのための@resultsをロードするためにbefore_filterを使用することができますか?

+1

これは正しいと思われますが、絶対にしなければセッションにデータを保存しないでください。 'before_filter'を使って、それを必要とするすべてのアクションに対して@resultsをロードします。 – Thilo

0

Railsは検索結果を実際の検索ページに表示せず、検索しているルートのデフォルトのインデックスページに表示します。

関連する問題