我有查询
@users = User.all
@users
包含name,created_at,email,mobile等属性值
我想从mysql datetime格式更新创建的用户可读格式,并在控制器
中更新它我编写了将日期转换为人类可读格式的代码,但在查看属性之前不知道如何设置值
所以任何方法都将适用
答案 0 :(得分:3)
Rails可以添加其他日期/时间格式......在初始化文件中添加类似的内容:
Date::DATE_FORMATS[:short_date] = "%b %d, %Y"
Date::DATE_FORMATS[:short_slashed] = "%m/%d/%Y" #careful when giving this to mysql adapter
Date::DATE_FORMATS[:date_dashed] = "%m-%d-%Y"
Date::DATE_FORMATS[:mysql_date] = "%Y-%m-%d"
Date::DATE_FORMATS[:full_date] = "%A, %B %d, %Y"
Time::DATE_FORMATS[:short_slashed] = "%m/%d/%Y %I:%M %p"
Time::DATE_FORMATS[:mytime] = "%a %b %d at %I:%M %p"
Time::DATE_FORMATS[:short_date] = "%b %d, %Y"
Time::DATE_FORMATS[:date_dashed] = "%m-%d-%Y"
Time::DATE_FORMATS[:mysql_date] = "%Y-%m-%d"
然后在您看来,您可以选择其中任何一个:
@user.created_at.to_s(:mytime)
@user.created_at.to_s(:short_date)
答案 1 :(得分:2)
直接在视图中的strftime()
属性上使用created_at
:
@user.created_at.strftime("%D")
文档:http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime
答案 2 :(得分:2)
仅为了呈现而弄乱属性值 - 不好的主意,不要这样做。
这看起来像一个辅助方法。我可能会把它放入用户模型本身(make_human_date
包含你的“人性化”日期的逻辑,你还没有指定)
# model
class User
def human_created_at
make_human_date(created_at)
end
end
# view
<%= @user.human_created_at %>
或者,您可以创建一个真正的帮助方法,因为它只有助于表示,它不是业务逻辑的一部分。
# helper
module MyControllerHelper
def human_created_at user
make_human_date(user.created_at)
end
end
# view
<%= human_created_at(@user) %>