如果数据库条目为空,则在视图中显示此“消息”

时间:2012-01-07 01:40:31

标签: ruby-on-rails database message

我是rails的新手,并且想知道如果数据库条目为空,是否可以在视图中有默认消息。例如,如果您有图像,则可以执行此操作:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%>

因此,如果那里没有图像链接,则会出现“目前没有可用图像” 但是如果你只是想显示一个字符串,那就说:

<%= post.info %>

但如果post.info为空,我想显示另一条消息,例如“目前没有可用信息”?我知道     &lt;%= post.info,:alt =&gt; '目前没有可用的信息'%&gt; 不行,但我似乎无法找到任何办法 - 可能是因为它很容易没有人问过这个问题大声笑!

我正在尝试在帮助器中使用下面的解决方案,因为我想使用几个不同的条目,但我似乎无法让它工作 - 我在下面添加了我的代码:

module ApplicationHelper
  def chk_blnk(gogo)
    if gogo.blank?
      "No img"
    else    
      return gogo
    end
  end
end

我也不确定如何在视图中调用它来获取变量(post.info)我知道通常你会这样称呼它:

<%= chk_blnk %>

如果这些是我尝试寻找答案的基本问题,我很抱歉,但我似乎无法找到任何答案。

2 个答案:

答案 0 :(得分:8)

你可以这样做:

<%= post.info.blank?? 'No post' : post.info %>

或者,如果您知道post.info将是nil(而不是空字符串),则其中没有任何内容:

<%= post.info || 'No Post' %>

或者,如果您需要包含一些标记:

<% if post.info.blank? %>
    <p>No Post</p>
<% else %>
    <%= post.info %>
<% end %>
BTW,这个行为:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available' %>

当没有要显示的图像是依赖于浏览器的时候:有些会给你一个破碎的图像图标,有些会显示alt文本,有些会显示任何内容。您正在滥用alt attribute

  

标记img元素的文本替代方法的首选方法是使用alt属性为图像提供完整的等效项,或者提供alt属性空值(表示图像纯粹呈现)。

alt文本应该是适合屏幕阅读器和其他非图形界面的图像描述,因此使用当前没有可用图像作为alt值没有多大意义。

答案 1 :(得分:2)

由于mu太短,答案基本相同,我会删除我的并给你另一种可能性。

如果这总是关于nil的空字符串或对象,那么您可以向Ruby的orString添加NilClass方法:< / p>

class String
  def or(default)
    self.empty? ? default : self
  end
end

class NilClass
  def or(default)
    default
  end
end

你可以这样做:

<%= post.info.or('Currently no information available') %>