Rails 3 ActiveRecord更新无法正常工作

时间:2012-03-22 12:16:33

标签: ruby-on-rails activerecord

更新我的数据库的现有记录时出现问题。

在我看来,我有复选框。当用户点击它时,ajax调用会触发 在我的控制器中有一个这样的代码:

t = Materialtitle.find(@doc_code)
t.pub_template = params[:checked]
t.save!

问题:当我第一次点击复选框时,所有内容都会更新。但是,当我第二次点击时,它没有更新。并且在日志中我有空事务:

←[1m←[35mMaterialtitle Load (0.0ms)←[0m  SELECT TOP (1) [materialtitles].* FRO
[materialtitles] WHERE [materialtitles].[id] = 181
←[1m←[36mEXECUTE (0.0ms)←[0m  ←[1mBEGIN TRANSACTION←[0m
←[1m←[35mEXECUTE (0.0ms)←[0m  COMMIT TRANSACTION

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

在我需要将模型属性的状态从true更改为false的情况下,以及使用用户可操作复选框触发的ajax调用的反之,我发现最简单的方法是使用切换!

在您的情况下,请在控制器代码中替换以下两行:

t.pub_template = params[:checked]
t.save!

使用以下内容,它将起作用:

t.toggle!(:pub_template)

只需确保在加载视图时,您正在显示模型属性的正确,实际状态,这样用户就不会感到困惑。

我希望你觉得这很有用。