2012-09-27 55 views
3

如何缩小下面的代码。是否可以在一行代替?收缩Ruby on Rails IF-ELSE代码

<% if pos_count < 0 %> 
    <% pos_name = "SHORT" %> 
    <% else %> 
    <% pos_name = "LONG" %> 
<% end %> 

谢谢!

回答

13

它可以在一个行完成与条件运算(这是一个三元运算符):

<% pos_name = (pos_count < 0) ? "SHORT" : "LONG" -%> 
+0

完美..只是我需要..谢谢.. – Twiddr

2

看起来这视图的逻辑,和最好的做法是将其最小化。我会建议解压缩到一个视图助手(或装饰者,如果你喜欢)。

由于伊什特万,建议您可以使用三元运算符,但可读性我只想把它作为if-else语句,并将其移动到一个方法,像这样:

应用程序/佣工/ my_view_helper.rb

module MyViewHelper 
    def pos_name(pos_count) 
    if pos_count < 0 
     "SHORT" 
    else 
     "LONG" 
    end 
    end 
end 
+0

+1在提取视图助手的视图逻辑。 随着项目的增长,还可以使用查看演示者: http://railscasts.com/episodes/286-draper?autoplay=true – andreiursan

+0

听起来像是一种很好的做法..那么我可以在查看:pos_count.pos_name? – Twiddr

+0

@Twiddr你可以在视图中将它称为'pos_name(pos_count)'。我更新了上面的代码以反映这一点。 – gylaz