例如,为什么日期助手的写法如下:
time_ago_in_words(@from_time)
而不是这样:
@from_time.time_ago_in_words
这是一个明确的设计错误/不一致吗?或者有什么理由吗?
答案 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存在焦点(即您可能想要将其本地化),开发人员可能会觉得帮助者对他们来说不是一个糟糕的地方。