4

これは些細なことのように見えますが、Ruby on Rails で私が持っているとしましょう

document.expire_in = 7.days

有効期限メッセージの人間が読めるバージョンを印刷するにはどうすればよいですか?

"Document will expire in #{document.expire_in}"
=> Document will expire in 7 days

たぶん、I18n.tまたはで動作するものI18n.l

これが機能する唯一の方法は

7.days.inspect => "7 日"

これが唯一の方法ですか??

ActiveSupport::Durationを見ていますが、答えがありません

どうも

4

3 に答える 3

4

したがって、Railsにはこのための組み込みソリューションはありません。私は一緒に行くことにしました

7.days.inspect => "7 days"

その後、プロジェクトが翻訳されるときに、ActiveSupport::Durationこれらを翻訳する意味のあるもので拡張します

ただし、この質問に対するロバートのコメントを確認することをお勧めします。私はデータベースに価値を保持するソリューションに同意します。例:「7日」そしてそれから何かをします。単位値を変換するように

document = Document.new
document.expire_in = "7 days"

document.translated_day

ドキュメントモデル(またはデコレータ)

class Document < ActiveRecord::Base
  #....

  def translated_day
    timeline = expire_in.split(' ')
    "#{timeline.first} #{I18n.t("timeline.${timeline.last}")}"
  end
  #..
end


#config/locales/svk.yml
svk:
  timeline:
    days: "dni"
于 2013-03-22T16:43:29.960 に答える
4

これはあなたの特定の質問には答えませんが、有効期限が切れる日時を設定してからdistance_of_time_in_wordsを活用する方がよいと思われます。

いつも単純に 7 日間と言うなら、それをハードコードされた文字列として書きませんか?

于 2013-03-08T17:09:46.440 に答える