Ruby on rails 使用日期时,我可以使用nil值做什么?

Ruby on rails 使用日期时,我可以使用nil值做什么?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,因此,我的数据库中有一个带有日期字段的对象,但有时它是零。在视图中是否有一种方法可以将其显示为字符串值。像TBA这样的东西也许可以吗?应该可以 作为对您评论的回应,是的,您可以在模型中这样做,但这不是一个好主意。为什么? 首先,它是关于数据的表示,因此它属于视图 其次,它可能会破坏东西。如果在模型中执行此操作,@event.date有时返回日期,有时返回字符串。如果调用@event.date.hour并且date是“TBA”,会发生什么情况?你会得到一个错误。唯一的解决办法是到处检查,这将是可怕

因此,我的数据库中有一个带有日期字段的对象,但有时它是零。在视图中是否有一种方法可以将其显示为字符串值。像TBA这样的东西也许可以吗?

应该可以

作为对您评论的回应,是的,您可以在模型中这样做,但这不是一个好主意。为什么?

首先,它是关于数据的表示,因此它属于视图

其次,它可能会破坏东西。如果在模型中执行此操作,
@event.date
有时返回日期,有时返回字符串。如果调用
@event.date.hour
并且
date
“TBA”
,会发生什么情况?你会得到一个错误。唯一的解决办法是到处检查,这将是可怕的

如果你真的要做很多事情,你可以在
application\u helper.rb
中创建一个helper方法,看起来像这样:

def date_or_tba(date)
  date || "TBA"
end
所以你可以在你的观点中写下:

<%= date_or_tba @event.date %>

这并不意味着更少的输入,但将有一个不可忽视的优势,即将字符串“TBA”的使用限制在一个地方——这意味着如果您需要更改它(例如,出于I18n的目的)——这非常容易

应该这样做

作为对您评论的回应,是的,您可以在模型中这样做,但这不是一个好主意。为什么?

首先,它是关于数据的表示,因此它属于视图

其次,它可能会破坏东西。如果在模型中执行此操作,
@event.date
有时返回日期,有时返回字符串。如果调用
@event.date.hour
并且
date
“TBA”
,会发生什么情况?你会得到一个错误。唯一的解决办法是到处检查,这将是可怕的

如果你真的要做很多事情,你可以在
application\u helper.rb
中创建一个helper方法,看起来像这样:

def date_or_tba(date)
  date || "TBA"
end
所以你可以在你的观点中写下:

<%= date_or_tba @event.date %>


这并不意味着更少的输入,但将有一个不可忽视的优势,即将字符串“TBA”的使用限制在一个地方——这意味着如果您需要更改它(例如,出于I18n的目的)——这非常容易

太棒了。这正是我想要的。在我的模型中有没有一种方法可以做到这一点,所以如果我在任何显示为“TBA”的地方调用@event.date?你可以,但我强烈建议不要这样做,因为这是关于演示的,所以应该在视图中。我会在回答中详细说明的。好吧,我现在明白为什么这是个坏主意了。添加助手似乎是一个不错的选择。谢谢令人惊叹的这正是我想要的。在我的模型中有没有一种方法可以做到这一点,所以如果我在任何显示为“TBA”的地方调用@event.date?你可以,但我强烈建议不要这样做,因为这是关于演示的,所以应该在视图中。我会在回答中详细说明的。好吧,我现在明白为什么这是个坏主意了。添加助手似乎是一个不错的选择。谢谢