非AJAXWebアプリでは、URLにビューパラメーターが含まれます(例:mysite?page = 2&sort = name)。AJAXアプリで、同じ情報をどこに保存しますか?Sessionオブジェクトでは?
2 に答える
AJAX呼び出しで追加のパラメーターを渡す方法を知りたいと思います。これは、AJAX呼び出しをどのように作成しているかによって異なります。
組み込みのRailsヘルパーを使用している場合は、url_for
ヘルパー内に追加のパラメーターを渡すことができます。たとえば、products
ルートがあり、すべての製品のリストをAJAXでロードしたいとします。ヘルパーは次のlink_to
ようになります(Rails 3.2)
link_to "All Products", products_path(:page => 2, :sort => "name"), :remote => true
一方、jQueryなどのJavaScriptフレームワークを使用している場合は、オプションを使用して追加のパラメーターを渡すことができdata
ます。例えば
$.ajax({
url: "/products",
data: {
page: 2,
sort: "name"
},
success: function(data) {
// handle success
},
failure: function(data) {
// handle failure
}
});
このデータ(ページ、並べ替えなど)の保存は、複数の方法で実行することもできます。最も簡単な方法は、このデータをJavaScript変数内に格納することです。
window.page = 2;
window.sort = "name";
data
別の解決策は、この情報をページ上の特定のDOM要素の属性に格納することです。たとえば<div id='products'>
、ページ化され、並べ替えられた商品のリストを含むがあれば、次のような情報を保存できます(jQuery)
$("#products").data("page", 2);
$("#products").data("sort", "name");
一般的に言って、RailsのAJAXに対して異なる方法でリクエストを構成することはありません。リンクまたはフォームに属性を追加して:remote => true
から、コントローラーアクションをrespond_tojsにします。
respond_to do |format|
format.js
end
次に、your_action.js.erbをビューに配置し、適切な方法でdomを更新するjavascriptを記述します。