<%if @item.rigged %>Yes<%else%>No<%end%>
我在想这样的东西?
if @item.rigged ? "Yes" : "No"
但这并不奏效。Ruby有||=,但我甚至不知道如何使用那个东西。
<%if @item.rigged %>Yes<%else%>No<%end%>
我在想这样的东西?
if @item.rigged ? "Yes" : "No"
但这并不奏效。Ruby有||=,但我甚至不知道如何使用那个东西。
当前回答
在Ruby中,if表达式的条件和then部分必须用表达式分隔符(即;或换行符)或then关键字。
所以,所有这些都是可行的:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Ruby中也有条件运算符,但这完全没有必要。在C语言中需要条件操作符,因为它是一个操作符:在C语言中,if是一个语句,因此不能返回值,所以如果你想返回值,你需要使用可以返回值的东西。C中唯一能返回值的东西是函数和操作符,因为在C中不可能创建if函数,你需要一个操作符。
然而,在Ruby中,if是一个表达式。事实上,在Ruby中一切都是表达式,所以它已经可以返回值了。条件操作符根本不需要存在,更不用说使用它了。
顺便说一句:习惯上,用于提问的方法的名字后面会有一个问号,就像这样:
@item.rigged?
这显示了在Ruby中使用条件操作符的另一个问题:
@item.rigged? ? 'Yes' : 'No'
这么多的问号彼此靠得这么近,简直让人看不懂。
其他回答
为了简单起见,如果你需要默认值为nil,你可以使用:
@something.nil? = "No" || "Yes"
别忘了它可以从ruby标签中生成内容:
v
<%= @item.rigged? ? "Yes" : "No" %>
标记(v)表示使用等号在html中生成文本。
从if @item中删除if。操纵?“是”:“不是”
三元运算符有窗体条件吗?If_true: if_false
在Ruby中,if表达式的条件和then部分必须用表达式分隔符(即;或换行符)或then关键字。
所以,所有这些都是可行的:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Ruby中也有条件运算符,但这完全没有必要。在C语言中需要条件操作符,因为它是一个操作符:在C语言中,if是一个语句,因此不能返回值,所以如果你想返回值,你需要使用可以返回值的东西。C中唯一能返回值的东西是函数和操作符,因为在C中不可能创建if函数,你需要一个操作符。
然而,在Ruby中,if是一个表达式。事实上,在Ruby中一切都是表达式,所以它已经可以返回值了。条件操作符根本不需要存在,更不用说使用它了。
顺便说一句:习惯上,用于提问的方法的名字后面会有一个问号,就像这样:
@item.rigged?
这显示了在Ruby中使用条件操作符的另一个问题:
@item.rigged? ? 'Yes' : 'No'
这么多的问号彼此靠得这么近,简直让人看不懂。
If else条件可以用三元运算符覆盖
@item.rigged? ? 'Yes' : 'No'