2011-03-26 62 views
0

不知道我在做什麼錯,但是在我的應用程序的多個位置使用!= nil語法時遇到困難。在這個例子中,只有在數據庫中存在超鏈接時,我纔想顯示帶有鏈接的圖標。不幸的是,在我看來,這些圖標顯示這些網址是否爲空/零。Rails 3 - 如果文件丟失,如何隱藏圖形?

<% if @host.home_url != nil %> 
    <%= link_to(image_tag("icon_website_32.png", :border=>0), @host.home_url) %> 
<% end %> 
我在試圖掩蓋一個地址的第二行,如果沒有一個相同的問題

<% if location.street_address2 != nil %> 
    <%= location.street_address2 %><br /> 
<% end %> 

有什麼建議給營銷小雞變成新手程序員?

謝謝!

+0

此外,人們如何使他們的代碼易於閱讀堆棧溢出? – 2011-03-26 18:54:47

+0

它是空字符串還是零?因爲'「」.nil? #=> false'和'「」.empty? #=> true' – 2011-03-26 19:08:28

+0

歡迎使用編程,歡迎來到Rails :)您將在StackOverflow上找到很多幫助。 – 2011-03-26 19:13:36

回答

3

您可以在這裏使用present?方法。您可以使用它內聯

<%= link_to image_tag("icon_website_32.png", :border=>0), @host.home_url if @host.home_url.present? %> 
+0

是的,這是自「現在?」與「空白」相反的最直接的方式嗎? – 2011-03-26 19:29:11

+0

非常感謝!這些例子非常棒! – 2011-03-26 21:16:10

1

Rails添加一個名爲blank?檢查值是否爲nil或者空字符串的方法,所以......

<% unless @host.home_url.blank? %> 
    <%= link_to(image_tag("icon_website_32.png", :border=>0), @host.home_url) %> 
<% end %> 

要感受這一點,在Rails的控制檯玩它(script/console在Rails 2.x中,或在Rails 3中的rails console)。

>> nil.blank? 
=> true 
>> ''.blank? 
=> true 
>> 'abc'.blank? 
=> false 

BTW,你會常規檢查「使用!var.nil?非空的紅寶石,而不是」純醇VAR!= nil`。

+0

太棒了!這一次解決了大約12個不同的問題!非常感謝! – 2011-03-26 21:13:50