为什么rails帮助器不是面向对象的呢?

时间:2009-04-15 16:32:35

标签: ruby-on-rails oop helpers

例如,为什么日期助手的写法如下:

time_ago_in_words(@from_time)

而不是这样:

@from_time.time_ago_in_words

这是一个明确的设计错误/不一致吗?或者有什么理由吗?

2 个答案:

答案 0 :(得分:5)

助手是视图对象上的方法,而不是它们正在显示的对象。这在OO意义上是有意义的,因为视图以特定格式显示数据,因此它负责将模型转换为该格式。

答案 1 :(得分:2)

很棒的问题!

大部分助手都是选择日期/时间。

http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html

我猜是谁写了它想要几个util方法,所以将time_ago_in_words和distance_of_time_in_words添加到他们的帮助器中。

由于time_ago_in_words和distance_of_time_in_words存在焦点(即您可能想要将其本地化),开发人员可能会觉得帮助者对他们来说不是一个糟糕的地方。