单行赋值:If(condition)variable = value1 else value2

时间:2012-12-08 11:07:36

标签: ruby-on-rails

我该怎么办?

if params[:property] == nil 
 @item.property = true
else 
 @item.property = false

总是忘记在一行中编写它的正确语法。

在PHP中它会是这样的:

@item.property=(params[:property]==nil)true:false

在rails中是否相同?

2 个答案:

答案 0 :(得分:14)

使用三元运算符:

@item.property = params[:property] ? true : false

或强制进行布尔转换(“not not”操作):

@item.property = !!params[:property]

注意:在ruby中,使用真正的布尔值是一个常见的习惯用法 ,因为falsenil以外的任何对象都会计算为true

答案 1 :(得分:0)

m_x答案是完美的,但您可能有兴趣知道其他方法,在其他情况下可能看起来更好:

if params[:property] == nil then @item.property = true else @item.property = false end

@item.property = if params[:property] == nil then true else false end