繁体   English   中英

红宝石方法无法正常工作

[英]ruby method not working as expected

我正在Rails中构建一个基本的杂货清单应用程序。 每个“项目”都有两个属性:name和checked。 名称只是项目的名称。 “已检查”应该指示用户是否已经“检查”了他们的杂货清单上的商品。

我在项目控制器中放置了一个简单的方法来解决此问题。 问题是方法只会将false更改为true。 它不会反转,并允许我取消选中项目。

这是我的项目控制器内部的方法:

  def checked 
    @item = Item.find(params[:id])
    if !@item.checked
        @item.update(checked: :true) 
    else
        @item.update(checked: :false)
    end 
    redirect_to root_path
  end 

这仅适用于虚假到真实的对话。 if语句的后半部分似乎不起作用。 有什么想法吗?

您确定要在其中使用符号:true:false吗?

我想相信checked是一个布尔字段,而Ruby中的布尔等效项是truefalse

不知道潜在的原因(也许使用#update ),但是我将尝试像这样编写代码:

def checked 
  @item = Item.find(params[:id])
  if @item.checked
      @item.update_attributes(checked: false) 
  else
      @item.update_attributes(checked: true)
  end
  redirect_to root_path
end 

... 要么 ...

def checked 
  @item = Item.find(params[:id])
  @item.update_attributes(checked: !@item.checked)
  redirect_to root_path
end 

编辑:作为@MrYoshiji评论,使用true代替:true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM