【问题标题】:Why aren't rails helpers more object-oriented?为什么 Rails 助手不是更面向对象的?
【发布时间】:2010-10-19 15:35:25
【问题描述】:

例如,为什么日期助手是这样写的:

time_ago_in_words(@from_time)

而不是这样:

@from_time.time_ago_in_words

这是明显的设计错误/不一致吗?还是有什么原因?

【问题讨论】:

    标签: ruby-on-rails oop helpers


    【解决方案1】:

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

    【讨论】:

      【解决方案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 以演示为重点(即您可能希望将其本地化),开发人员可能认为帮助器对他们来说不是一个坏地方。

      【讨论】:

      • 我不确定最后一段中的推论是否如下——例如,“to_s”是以演示为中心的,您可能希望对其进行本地化,但我们仍然使用@from_time.to_s 而不是to_s(@from_time).
      • 我同意 - 我确实使用了这个词 ;) 更新以使我的答案更笼统!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2018-05-18
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多