在我的Rails 3应用程序中,我使用jQuery发布以下内容:
http://0.0.0.0:3000/topics/read_updater?&topic_id=101&read=true
在我的控制器中:
def read_updater
current_user.topics.where(:topic_id => params[:topic_id]).update_all(:read => params[:read])
render :json => {:status => 'success' }
end
params [:topic_id]效果很好,但是params [:read]在数据库中插入空值,即使jQuery发布了true或false。想法?我希望rails用true或false更新数据库。
由于
答案 0 :(得分:2)
也许update_all
没有解析传递的字符串? params[:read]
是一个字符串:
params[:read]
=> "true"
# or
=> "false"
所以也许它正在尝试将字符串保存到此列中,这就是您遇到问题的原因。
试试这一行:
current_user.topics.where(:topic_id => params[:topic_id]).update_all(:read => true)
看看它是否有效。如果是,请将:read => params[:read]
替换为:read => params[:read] == 'true'
。
我也希望您已经检查了params
哈希在此控制器中的外观。如果没有,请填写:
logger.debug params.inspect
在read_updater
方法的开头,检查日志是否一切正常。