[英]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中的布尔等效项是true
和false
。
不知道潜在的原因(也许使用#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.