一行if语句不起作用
<%if @item.rigged %>Yes<%else%>No<%end%> 我在想这样的事情?
 if @item.rigged ? "Yes" : "No" 
 但它不起作用。  Ruby有||=但我甚至不知道如何使用这个东西。 
  if从if @item.rigged ? "Yes" : "No"删除if @item.rigged ? "Yes" : "No" if @item.rigged ? "Yes" : "No" 
 三元运算符有formscondition ? if_true : if_false condition ? if_true : if_false 
 在Ruby中,条件和ifexpression式的一部分必须由expression式分隔符(即;或换行符)或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中创build一个函数,所以需要一个运算符。 
 然而,在Ruby中, if是expression式。 事实上, 一切都是Ruby中的expression式,所以它已经可以返回一个值。 条件操作符不需要存在 ,更不用说使用它了。 
顺便说一句:习惯上用最后用问号来提问的方法,就像这样:
 @item.rigged? 
这显示了在Ruby中使用条件运算符的另一个问题:
 @item.rigged? ? 'Yes' : 'No' 
用相互接近的多个问号很难阅读。
一行如果:
 <statement> if <condition> 
你的情况:
 "Yes" if @item.rigged "No" if !@item.rigged # or: "No" unless @item.rigged 
从我所知道的
3单线
-  a = 10 if <condition>
 例如: a = 10 if true # a = 10 ,则b = 10 if false # b = nil a = 10 if true # a = 10 , b = 10 if false # b = nil ,则b = 10 if false # b = nil 
-  a = 10 unless <condition>
 例如: a = 10 unless false # a = 10 , b = 10 unless true # b = nil 
-  a = <condition> ? <a> : <b>
 例如: a = true ? 10 : 100 # a = 10  a = true ? 10 : 100 # a = 10 , a = false ? 10 : 100 # a = 100 a = false ? 10 : 100 # a = 100 
我希望它有帮助。
shell和C一行构造工作(ruby 1.9.3p429):
 # Shell format irb(main):022:0> true && "Yes" || "No" => "Yes" irb(main):023:0> false && "Yes" || "No" => "No" # C format irb(main):024:0> true ? "Yes" : "No" => "Yes" irb(main):025:0> false ? "Yes" : "No" => "No" 
如果其他条件可以用三元运算符覆盖
 @item.rigged? ? 'Yes' : 'No' 
您可以使用 – –
(@ item.rigged)? “是”:“不”
如果@ item.rigged为真,它将返回'是',否则返回'否'