在下面的視圖代碼示例中,我可以避免兩次使用@thing嗎?我需要檢查nil
,但視圖變得非常混亂。消除視圖中的重複
if @thing
@thing
end
或
@thing unless @thing.nil?
在下面的視圖代碼示例中,我可以避免兩次使用@thing嗎?我需要檢查nil
,但視圖變得非常混亂。消除視圖中的重複
if @thing
@thing
end
或
@thing unless @thing.nil?
您可以嘗試使用像[andand] [1。
看着亞歷克斯的答覆意見,你可能最終的東西,如:
isbn.pubdate.andand.strftime("%d %B '%y")
這將返回nil
或正確格式化字符串靠的是什麼pubdate的。
如果你只是想輸出@thing或什麼,如果事情是nil
,你應該能夠只是做:
<%= @thing %>
如果@thing是nil
Ruby將會調用Nil.to_s
,它返回""
(即沒有任何輸出)。否則,它會調用@thing.to_s
我會將其標記爲正確的,因爲它回答了我的問題。然而 - 我真實的例子是:'isbn.pubdate.strftime(「%d%B'%y」)''。如果pubdate爲零,則會出現錯誤,因爲您無法在nil上調用strftime。你知道有什麼方法可以避免檢查零時有另一種方法被稱爲? 我現在把醜陋的一面變成了幫手,但我不希望幫手也變醜! – snowangel
@snowangel <%= isbn.pubdate.try(:strftime,「%d%B」%y「)%>。嘗試是send()的別名,所以如果你在nil上調用try
哦,光榮的。雖然我沒有讀過發送/嘗試的地方是壞的? – snowangel
'@thing if @ thing'可能是我知道的最短的。 –
Ta,Jakub。很高興知道我不會錯過任何明顯的事情。 – snowangel