我有疑问
@users = User.all
@users
包含 name、created_at、email、mobile 等作为属性值
我想将创建的 at 从 mysql 日期时间格式更新为用户可读格式并在控制器中更新它
我已经编写了将日期转换为人类可读格式的代码,但在查看之前不知道如何为属性设置值
所以任何方法都会被应用
我有疑问
@users = User.all
@users
包含 name、created_at、email、mobile 等作为属性值
我想将创建的 at 从 mysql 日期时间格式更新为用户可读格式并在控制器中更新它
我已经编写了将日期转换为人类可读格式的代码,但在查看之前不知道如何为属性设置值
所以任何方法都会被应用
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)
strftime()
直接在created_at
视图中的属性上使用:
@user.created_at.strftime("%D")
文档:http ://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime
只是为了展示而弄乱属性值 - 坏主意,不要那样做。
这看起来像一个辅助方法。我可能会将其放入用户模型本身(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) %>