在非 AJAX 网络应用程序中,URL 将包含我的视图参数(例如 mysite?page=2&sort=name)。在 AJAX 应用程序中,我在哪里存储相同的信息?在 Session 对象中?
问问题
399 次
2 回答
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
另一方面,如果您使用的是jQuerydata
之类的 JavaScript 框架,则可以使用该选项传递其他参数。例如
$.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");
于 2012-06-12T14:07:57.593 回答
0
一般来说,您不会在 Rails 中构造您对 AJAX 的不同请求。您只需将:remote => true
属性添加到您的链接或表单,然后使控制器操作 respond_to js
respond_to do |format|
format.js
end
然后将 your_action.js.erb 放入您的视图中并编写以适当方式更新 dom 的 javascript。
于 2012-06-12T13:42:26.173 回答