【问题标题】:rails: remotely overwriting the value of an existing instance variablerails:远程覆盖现有实例变量的值
【发布时间】:2015-11-20 20:58:54
【问题描述】:

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

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

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

我尝试将@list 变量替换为传递到每个部分的局部变量,但这并不能解决问题。提前感谢您的考虑。

【问题讨论】:

  • 您能提供分配@list 的控制器代码吗?

标签: ruby-on-rails renderpartial


【解决方案1】:

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

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

【讨论】:

  • 列表和网格之间的切换不是通过控制器完成的——我在两个按钮上都有监听器,它们在列表或网格模式下重新渲染屏幕。所有这些都是在本地完成的,没有更新 @list 变量,也没有与控制器通信。
猜你喜欢
  • 2014-11-29
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
相关资源
最近更新 更多