用Ruby on Rails语言化人的年龄

时间:2012-12-08 22:26:22

标签: ruby-on-rails ruby-on-rails-3.1

我需要用语言表达一个人的年龄。是否有Rails助手:

例如:

  • 如果此人不到一个月:X天以后
  • 如果此人不到一年:X个月
  • 如果它在1到5之间:X年,Y个月

任何想法?

1 个答案:

答案 0 :(得分:2)

您可以在ActionView :: Helpers :: DateHelper模块中自定义帮助程序。

https://github.com/rails/rails/blob/4b1985578a2b27b170358e82e72e00d23fdaf087/actionpack/lib/action_view/helpers/date_helper.rb#L67

除此之外,您可以非常轻松地创建自己的助手,而无需考虑闰日......这可能重要也可能不重要。

def humanize_age(person)
  age = Date.today - person.birth_date
  years = (age / 1.year).to_i
  age = age % 1.year
  months = (age / 1.month).to_i
  age = age % 1.month
  days = (age / 1.day).to_i

  if years < 1
    if months < 1
      "#{days} days old"
    else
      "#{months} months old"
    end
  else
    "#{years} years, #{months} months old"
  end
end

这可以清理一下,我还没有测试过,但这应该可行。