Railsアプリにページネーションを実装するためにJQueryを使用していますが、ブラウザに戻ったときにRailsがページコンテンツのレンダリングに失敗し、代わりに生のJavascriptをブラウザウィンドウにダンプするという問題に遭遇しました。ここで私が使用しているものを簡単に見てみましょう:
ページネーション.js:
if (history && history.pushState) {
$(function () {
$('.pagination a').live("click", function () {
$.ajax({url: this.href, dataType: "script", cache: true});
history.pushState(null, document.title, this.href);
$("html, body").animate({ scrollTop: 0 }, 300);
return false;
});
$(window).bind("popstate", function() {
$.ajax({url: location.href, dataType: "script", cache: true});
});
});
}
私の見解では、index.js.erb:
$("#products").html("<%= escape_javascript(render("products")) %>");
時々動作しますが、戻るボタンを押すと、JSが評価/レンダリングされずにブラウザーウィンドウにダンプされることがよくあります。これは次のようになります(私のブラウザでは):
$("#products").html("<table class=\"table table-striped\">\n<thead>\n<tr>\n<th>Products
...等。何が失敗しているのか正確にはわかりません。何か案は?