5

我该怎么做这样的事情?

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

总是忘记将其写在一行中的正确语法。

在 PHP 中它会是这样的:

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

在rails中是一样的吗?

4

2 回答 2

14

使用三元运算符:

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

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

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

注意:在 ruby​​ 中,不使用真正的布尔值是一个常见的习惯用法,因为除falseor之外的任何对象都nil计算为true

于 2012-12-08T11:35:00.750 回答
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
于 2012-12-08T12:30:57.797 回答