2012-12-08 44 views
2

我该如何做这样的事情?单行分配:如果(条件)变量=值1其他值2

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

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

在PHP这将是这样的:

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

是它在轨道一样吗?

+0

三元操作符? –

+0

这不是有效的PHP代码,是吗?该语句看起来像这样afaik:$ item-> property =($ something === NULL)? true:false – Kloar

+0

也许,这仅仅是一个例子 – user1885058

回答

11

使用三元运算:

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

或强制布尔转换( “未未” 操作):

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

注:在红宝石,它是一个常见的成语到使用真正的布尔值,因为除falsenil之外的任何对象的评估结果为true

+0

正是我所需要的 – user1885058

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