【问题标题】:Update attribute on check box click (Rails 3)单击复选框时更新属性(Rails 3)
【发布时间】:2011-03-09 05:54:15
【问题描述】:

我一直在寻找这个问题的实际答案:

单击复选框时,通过 ajax 更新对象属性的最佳方法是什么?只需要将属性从 false 翻转为 true,反之亦然。

stackoverflow 上有一个或两个关于此的线程,但他们要么使用 observe_field(我宁愿只使用 Prototype 函数),要么根本没有解决问题,似乎。

再说一遍,这是 Rails 3 和 Prototype。

【问题讨论】:

标签: ruby-on-rails ajax prototypejs


【解决方案1】:

我猜是复选框部分让你绊倒了?

你真正需要做的就是在你的模型中有一个方法来切换适当的字段

# somewhere in your model
my_boolean_field.toggle

然后将.click() 处理程序绑定到您的复选框以执行ajax 请求。如果需要,可以在 .click() 处理程序回调中更新复选框,但我不确定是否有必要。

这里唯一棘手的部分是如果用户快速单击复选框几次该怎么办。一种选择是在单击复选框后禁用复选框,直到回调完成。

【讨论】:

  • 我想让我感到困惑的是 Rails 期望数据被格式化的方式,以及进入什么控制器。我在想我必须以某种方式将它发送到更新控制器,但也许我最好为这个操作构建一个特定的控制器。
  • 更新是控制器中的一个动作。通常,您将拥有一个与模型相对应的控制器。例如,如果您有一个名为“book”的模型,您可能有一个“BooksController”。并且“BooksController”将具有诸如“显示、更新、创建”等操作。是的,你是对的,你应该创建一个新的 action 来切换你的属性。
  • 抱歉 - 我的意思是:TasksController 中的更新操作
猜你喜欢
  • 2011-05-21
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2012-11-14
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2013-02-11
相关资源
最近更新 更多