在AJAX会话中存储视图参数的位置?

时间:2012-06-12 12:59:28

标签: ruby-on-rails ajax

在非AJAX网络应用程序中,URL将包含我的视图参数(例如,mysite?page = 2& sort = name)。在AJAX应用程序中,我在哪里存储相同的信息?在Session对象中?

2 个答案:

答案 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。