0

will_paginate を使用してページ分割されたアイテムのリストがあり、これはうまく機能します。レールキャストの指示に従って最終的にAJAXを実装しましたが、それは魅力のように機能します。しかし、アイテムのページに移動して「戻る」リンクをクリックすると、ページと並べ替えが失われます。

たとえば、書籍のリストで、タイトルで並べ替えて 2 ページ目に移動し、書籍をクリックすると問題なく動作します。次に「戻る」をクリックすると、ソートせずにリストの最初のページに戻ります。これは、URL が AJAX 呼び出しで更新されなくなったためだと理解しています。

RailsアプリでAJAXを使用してバックリンクのページネーションとソートを維持するにはどうすればよいですか?

これは、AJAX を実装するために使用するコードです。

results.js.erb:

$("#search_results").html("<%= escape_javascript(render :partial => "layouts/search_results_list").html_safe %>");

ページネーション.js:

$(function() {
  $("#search_results").on("click", ".sort a, .pagination a", function() {
    $.getScript(this.href);
    return false;
  });
});

Book ページから、私は単純に以下を使用します。

request.referer

リストに戻ります。

4

1 に答える 1

1

何度も検索して適切な解決策を見つけることができなかった後、Railscastは別の投稿でずっと答えを持っていたことがわかりました。これらの行を pagination.js に追加すると、うまくいきました。

history.pushState(null, "", this.href);
$(window).bind("popstate", function () {
    $.getScript(location.href);
});

これにより、AJAX リクエストごとに URL が変更されます。私が考えていた他のソリューションよりもはるかに簡単です。

于 2013-05-10T03:16:39.143 に答える