2012-09-27 54 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