1

所以我的数据库中有一个带有日期字段的对象,但有时它会为零。视图中有没有办法可以将其显示为字符串值。可能是 TBA 之类的东西?

4

1 回答 1

6

<%= @event.date || "TBA" %>应该这样做。

作为对您的评论的回应,是的,您可以在模型中执行此操作,但这是一个坏主意。为什么?

首先,它是关于数据的呈现,因此它属于视图。

其次,它可能会破坏事物。如果您在模型中执行此操作,@event.date有时会返回日期,有时会返回字符串。如果你打电话给你会@event.date.hour发生date什么"TBA"?你会得到一个错误。唯一的解决办法是到处检查它,这太可怕了。

如果你真的要做很多,你可以创建一个辅助方法application_helper.rb,看起来像这样:

def date_or_tba(date)
  date || "TBA"
end

所以你可以在你的视图中写:

<%= date_or_tba @event.date %>

这并没有少多少打字,但具有将字符串“TBA”的使用限制在一个地方的不可忽视的优势——这意味着如果你需要更改它(例如用于 I18n 目的)——这真的很容易。

于 2012-04-18T14:14:05.223 回答