3

映画の長さを分単位で表す duration 属性を持つ というActiveRecordモデルを考えてみましょう。Movieビューでこの属性を出力する最良の方法は何ですか?

私はこのようなものを書くことができるようにしたいと思います:

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

しかし、次のように書くことができれば、さらに素晴らしいでしょう。

= l(@movie.duration)

あるいは

= @movie.duration

ただし、これには、データベースでは単なる整数である期間属性で使用される単位を宣言する何らかの方法が必要になります。

Rails I18n には属性を変換する方法があるようですが、値ではなく名前だけです。

I18n とうまく連携するソリューションが望ましいです。

4

3 に答える 3

2

Rails は値が分単位であることを知りません。

この機能はヘルパー、または (私の好みでは) デコレーターに属し、I18N ラベルが付いています。

于 2013-05-15T23:17:48.513 に答える
1

ここで物事を複雑にする理由はありません。異なる単位間でさえ変換していません:

あなたの見解では:

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

あなたのconfig/locales/en.yml

en:
  models:
    movie:
      duration:
        one: '%{count} minute'
        other: '%{count} minutes'
于 2013-05-16T17:27:40.890 に答える