2011-12-04 13 views
2

他の人がEndless Pageのrailscastをたどり、load moreボタンを使うように変更したことを読んだことがあります。しかし、私はそれを修正しようとすると、私はちょうど同じ作品を追加して終了します。言い換えれば、それはまだcurrent_pageから抜け出しています。will_paginate with Rails 3.1でjQueryを使用してボタンを追加

私は私の「負荷より」div要素をクリックすると、私はトリガーにこのアップロード:私のコントローラで

$("#products").append("<%= escape_javascript render(@products) %>"); 

を、私は

@products = Product.where(:created_at => 180.days.ago..Time.now).order(sort_column + " " + sort_direction).page(params[:page]).per_page(16) 

を持って、私は何とかにできるようにしたい場合、私は思ったんだけどwill_paginateの.next_pageを使用してください。

Rails 3とjQueryを使用して誰かがwill_paginateと同様のことをしましたか?

答えて

5

$("#products").append("<%= escape_javascript render(@products) %>"); 

// Hide link if it is last page otherwise update link 
<% if @products.total_pages == @products.current_page %> 
    $("#show_more_link").hide(); 
<% else %> 
    $("#show_more_link").attr("href", "<%= method_that_returns_products_path(:sort => sort_column, :direction => sort_direction, :page => (@products.current_page + 1)) %>"); 
<% end %> 
+0

感謝を

# Show link only if there are more than one page and pass page and sorting parameters <% unless @products.total_pages < 2 %> <%= link_to 'show_more', method_that_returns_products_path(:sort => sort_column, :direction => sort_direction, :page => 2), :remote => true, :id => 'show_more_link' %> <% end %> 

を表示し、JS応じて製品にこの

のようなものを試してみてください!私は間違って元のlink_toではなく、レンダリングでparamsを渡そうとしていました。 – Oakland510

+0

ありがとう!より良い解決策(jsが無効の場合): @ products.next_page.nil? (= sort_column、:direction => sort_direction、:page => @ products.next_page)、:remote => true、:id => 'show_more_link' – Gady

0

リクエスト中に:pageパラメータを渡していますか?例:http://yourdomain.com/products?page=3

もしそうでなければ、will_paginateはクエリをオフセットすることを知らず、結果のページ1を戻し続けます。

関連する問題