我在使用日期时间格式时遇到问题。现在的情况:
我有一个带有日期时间的几个字段的数据库。格式类似于2011-11-16 15:07:00 UTC
。我想在我的应用程序中更改此格式。我不在乎它是否以这种方式保存在数据库中,但我希望它在相应的视图中更加客户友好(我来自德国,所以这将是16.11.2011 15:07
)。
我尝试使用I18n,它至少可以用于几个部分。我创建了一个语言环境(并将default_locale添加到application.rb)。 rails是否有一种方法可以在不改变相应视图的情况下使用此区域设置?我找不到它,所以我(成功地)尝试了以下内容:
对于我的索引视图,我已经使用了一个小函数
application_helper.rb:
module ApplicationHelper
def nice_date_form(the_date)
if !the_date.nil?
I18n.l the_date, :format => :short
end
end
end
当我尝试将该方法与编辑/新视图(_form.html.erb
)一起使用时出现问题,它根本不起作用。过了一会儿,我遇到了关于主题虚拟属性的RailsCast,这至少暂时解决了我的问题。我可以在模型中使用getter和setter方法,但是对于不同的表和字段,这将是一个很大的重复。
_form.html.erb:
(...)
<div class="field">
<%= f.label :abfahrt %><br />
<%= f.text_field :nice_date_edit %>
</div>
(...)
长话短说:我现在搜了很久,不知道从哪里继续。我想这不是解决这个问题的最佳方法吗?有没有办法简化它并为datetime设置一种rails-wide格式呢?
一些提示将不胜感激!提前谢谢。
基督教
答案 0 :(得分:2)
您可以使用strftime()在视图标签中格式化日期时间(在相应的视图中对客户友好)。
你的助手方法可能是
module ApplicationHelper
def nice_date_form(the_date)
if !the_date.nil?
the_date.strftime(“%d.%m.%y %H:%M”)
end
end
end
有关详细信息,请查看Rails Datetime Format
答案 1 :(得分:1)
查看有关创建用户时区的此railscast:http://railscasts.com/episodes/106-time-zones-in-rails-2-1