2012-03-22 97 views
0

更新我的数据库的现有记录时出现问题。Rails 3 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 

感谢您的帮助。

+0

第二次参数中有什么? – 2012-03-22 12:17:09

+0

第一次网址 - ** http://127.0.0.1:3000/admin/templates/74/publicate?locale = uk&checked = 1 **,第二次 - ** http://127.0.0.1:3000/admin/templates/74/publicate?locale = uk&checked = 0 ** – 2012-03-22 12:40:45

回答

0

在这种情况下,我需要一个模型的属性的状态从真更改为false,反之亦然与Ajax调用与用户可操作的复选框解雇,我发现这样做是切换的最简单方法!

在你的情况下,更换控制器的代码如下两行:

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

用下面的一个,它会只是工作:

t.toggle!(:pub_template) 

加载时,只要确定查看你正在显示模型属性的正确的实际状态,这样用户就不会感到困惑。

我希望你发现这很有用。

+0

超级!有用。非常感谢您的帮助 – 2012-03-22 12:43:40