rails:远程覆盖现有实例变量

时间:2015-11-20 20:58:54

标签: ruby-on-rails renderpartial

感谢您阅读本文。 我的rails应用程序中有一个索引视图。它有一个区域,我显示一个记录列表。我使用一个名为@list的实例变量来保存记录数组。我在表单上有几个按钮,以网格或列表格式远程呈现列表。一切都很好 - 我有一个grid_partial和一个list_partial,我使用JS来渲染用户点击的任何视图。

我最近添加了一项功能,允许用户选择列表的订购标准(按价格排序:升序,交货日期:降序等)。当他们点击订购方案时,我在控制器中ajax一个更新@list值的方法。然后,update方法调用呈现partial的js.erb文件。它正确执行此操作,因为@list记录现在按用户请求的顺序排列。当我单击其中一个按钮在列表和网格视图之间切换时,会出现问题。当我这样做时,列表和网格部分使用原始的,未更新的@list版本,而不是我最近从服务器的最后一次AJAX通信中收到的值。我的两个部分都引用了@list实例变量来获取数组。

我的意图是能够更新/覆盖@list的值,以便后续呈现引用@list的partials将使用新的更新值。这可能吗?

我试图将@list变量替换为传递给每个部分的局部变量,但这并不能解决问题。在此先感谢您的考虑。

1 个答案:

答案 0 :(得分:0)

基于可用的有限信息,我猜测在单击按钮时呈现列表/网格部分的控制器不知道改变的排序方案。

您可以考虑将来自客户端的信息作为查询参数传递,或者将其保存在会话中。