Rails 3 - 如果文件丢失,如何隐藏图形?

时间:2011-03-26 18:53:33

标签: ruby-on-rails ruby ruby-on-rails-3

我不确定我做错了什么,但在我的应用中的多个地方遇到了!= nil语法有困难。在此示例中,仅当数据库中存在超链接时,我才想显示带有链接的图标。不幸的是,图标显示我的视图中的网址是否为空/无。

<% 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 %>

营销小妞的任何建议都会成为新手程序员吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以在此处使用present?方法。你可以在线使用它

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

答案 1 :(得分:1)

Rails添加了一个名为blank?的方法来检查值是nil还是空字符串,所以......

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

要了解这一点,请在Rails控制台(Rails 2.x中的script/console或Rails 3中的rails console)中使用它。

>> nil.blank?
=> true
>> ''.blank?
=> true
>> 'abc'.blank?
=> false
顺便说一句,你通常会使用!var.nil?而不是'var!= nil`来检查Ruby中的非零'。