在非AJAX网络应用程序中,URL将包含我的视图参数(例如,mysite?page = 2& sort = name)。在AJAX应用程序中,我在哪里存储相同的信息?在Session对象中?
答案 0 :(得分:3)
我假设你想知道如何通过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";
另一种解决方案是将此信息存储在页面上特定DOM元素的data
属性中。例如,如果您有<div id='products'>
包含分页,排序产品的列表,您可以存储这样的信息(jQuery)
$("#products").data("page", 2);
$("#products").data("sort", "name");
答案 1 :(得分:0)
一般来说,在Rails中,您不会以不同的方式构建对AJAX的请求。您只需将:remote => true
属性添加到您的链接或表单,然后使控制器操作respond_to js
respond_to do |format|
format.js
end
然后将your_action.js.erb放在你的视图中并编写以适当的方式更新dom的javascript。