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

use*_*150 3 database message ruby-on-rails

我是rails的新手,并且想知道如果数据库条目为空,是否可以在视图中有默认消息.例如,如果你有一个图像,你可以这样做:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%>
Run Code Online (Sandbox Code Playgroud)

因此,如果没有图像链接,那么就会出现"当前没有图像可用"但是如果你只是想显示一个字符串,那么:

<%= post.info %>
Run Code Online (Sandbox Code Playgroud)

但如果post.info为空,我想显示另一条消息,如"目前没有可用信息"?我知道<%= post.info,:alt =>'目前没有可用的信息'%>不起作用但我似乎无法找到任何方法来做到这一点 - 可能是因为它很容易没有人有过问了问题哈哈!

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

module ApplicationHelper
  def chk_blnk(gogo)
    if gogo.blank?
      "No img"
    else    
      return gogo
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

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

<%= chk_blnk %>
Run Code Online (Sandbox Code Playgroud)

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

mu *_*ort 8

你可以这样做:

<%= post.info.blank?? 'No post' : post.info %>
Run Code Online (Sandbox Code Playgroud)

或者,如果你知道当它没有任何东西时post.info会是nil(而不是一个空字符串):

<%= post.info || 'No Post' %>
Run Code Online (Sandbox Code Playgroud)

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

<% if post.info.blank? %>
    <p>No Post</p>
<% else %>
    <%= post.info %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

BTW,这个行为:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available' %>
Run Code Online (Sandbox Code Playgroud)

当没有要显示的图像是依赖浏览器时:有些会给你一个破碎的图像图标,有些会显示alt文字,有些则不显示.您正在滥用该alt属性:

标记img元素的文本替代的首选方法是使用该alt属性为图像提供完全等效,或者提供alt具有空值的属性(以指示图像纯粹呈现).

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