考虑一个名为 ActiveRecordMovie 模型,它的持续时间属性表示以分钟为单位的电影长度。在我看来,打印出此属性的最佳方法是什么?

我希望能够写出这样的东西:

= l(@movie.duration, unit: :minutes) # Should return "105 minutes"

但如果我能写出来就更棒了:
= l(@movie.duration)

甚至
= @movie.duration

但是,这需要某种方式来声明在持续时间属性中使用什么单位,该属性只是数据库中的一个整数。

Rails I18n 似乎有一种翻译属性的方法,但只有它们的名称,而不是它们的值。

与 I18n 配合良好的解决方案是可取的。

最佳答案

我看不出有什么理由把事情复杂化。你甚至没有在不同单位之间转换:

在您看来:

<%= t :'models.movie.duration', :count => @movie.duration %>

在您的 config/locales/en.yml
en:
  models:
    movie:
      duration:
        one: '%{count} minute'
        other: '%{count} minutes'

关于ruby-on-rails - 本地化时间单位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16576499/

10-13 00:08