如何在Rails应用程序中保留有关您所在页面的数据

时间:2010-07-22 15:04:32

标签: ruby-on-rails ajax

如果我解释一下我正在尝试做什么,这可能是最简单的。我在Rails app控制器中有三个动作,每个动作都呈现不同的页面。页面渲染使用单个部分完成,该部分使用在控制器操作代码中设置的变量。例如,每个页面上都有一个列表,但在一个页面上列表是可排序的。到目前为止,我一直在通过在我的操作的代码中将@sortable标志设置为true或false来处理此问题。

最初运行操作时,此方法正常。问题是我有AJAX的东西(例如在列表中添加一个新元素),当发生这种情况时,我需要再次知道@sortable变量的值。它似乎已经消失了,尽管我在技术上仍然在同一页面上。我想要的是一个链接到你所在页面的变量商店。

您对此有何建议? (将它存储在Rails session哈希中似乎有点矫枉过正 - 通过一些尚未实现的操作将错误的值留在那里的可能性太大了。)

2 个答案:

答案 0 :(得分:1)

为什么你不想使用会话?至于我before_filter适用于此类任务

ApplicationController中的

before_filter :init_actions

def init_actions
  session[:action] = action_name
  session[:controller] = controller_name
end

答案 1 :(得分:1)

在rails中,我只设法为初始设置设置页面作用域变量。

我认为唯一的解决方案是从ajax请求的页面传递可排序标志。您可以使用javascript变量,隐藏字段,列表中的自定义属性或任何您希望的方式存储它,然后在ajax中将其添加到请求中,以便您可以在服务器端持续处理它。