Rails - 发布布尔值(true或False)并更新控制器中的DB

时间:2010-12-29 21:49:03

标签: jquery ruby-on-rails ruby-on-rails-3

在我的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更新数据库。

由于

1 个答案:

答案 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方法的开头,检查日志是否一切正常。