ruby方法没有按预期工作

时间:2017-08-18 21:44:47

标签: ruby-on-rails ruby

我正在Rails中构建一个基本的购物清单应用程序。每个"项目"有两个属性:name和checked。名称只是项目的名称。 Checked应该表明用户是否已经检查过#34;他们的杂货清单上的项目。

我在项目控制器中放了一个简单的方法来解决这个问题。问题是该方法只会将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语句的后半部分似乎不起作用。思考?

2 个答案:

答案 0 :(得分:3)

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

我想相信checked是一个布尔字段,Ruby中的布尔等价物是truefalse

答案 1 :(得分:2)

不确定潜在原因(可能使用#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

相关问题