Ruby on rails 如果数据库条目为空,则显示此';消息';鉴于

Ruby on rails 如果数据库条目为空,则显示此';消息';鉴于,ruby-on-rails,database,message,Ruby On Rails,Database,Message,我是rails新手,想知道如果数据库条目为空,视图中是否可能有默认消息。例如,如果您有图像,您可以执行以下操作: <%= image_tag "#{post.imge}", :alt => 'Currently no image available'%> <%= post.info.blank?? 'No post' : post.info %> 我也不知道当它接受变量(post.info)时如何在视图中调用它。我知道通常您会这样调用它: <%= chk_

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

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%>
<%= post.info.blank?? 'No post' : post.info %>
我也不知道当它接受变量(post.info)时如何在视图中调用它。我知道通常您会这样调用它:

<%= chk_blnk %>

很抱歉,如果这些问题真的是基本问题,我已经尝试过寻找答案,但仍然找不到任何答案。

您可以这样做:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available'%>
<%= post.info.blank?? 'No post' : post.info %>
或者,如果需要包含一些标记:

<% if post.info.blank? %>
    <p>No Post</p>
<% else %>
    <%= post.info %>
<% end %>

无职位

顺便说一句,这种行为:

<%= image_tag "#{post.imge}", :alt => 'Currently no image available' %>
“当前没有可用的图像”%>
如果没有可显示的图像,则取决于浏览器:一些图像会显示一个损坏的图像图标,一些图像会显示
alt
文本,一些图像不会显示任何内容。您正在滥用:

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


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

因为mu太短,所以答案基本相同,我将删除我的,并给你一个其他可能性

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

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


谢谢你的回复,我不知道该把这个放在哪里。我会把这个方法放到应用程序控制器中吗?你可以在初始化器中添加这个代码。例如,
config/initializers/extensions.rb
。Hi-mu太短了,谢谢你的回复和关于alt的提示。我现在不会以这种方式使用它。我正在尝试使用您的if语句的第二个解决方案,但使用.blank?(因为它是字符串)在helper中。但我似乎无法让它发挥作用-我已将它添加到上面的帖子中。@user1104150:它应该是
空白的?
,但出于某种原因,我的手指插入了
空的?
。我看不出这个问题有任何变化,你还在研究吗?@user1104150:你应该能够使用
<%= post.info.or('Currently no information available') %>