在Rails中的文本框中格式化日期时间

jer*_*ith 22 datetime ruby-on-rails

有没有一种简单的方法来格式化DateTimeRails视图中的值的显示?

例如,如果我做的事情如下:

<%= text_field :my_object, :start_date %>
Run Code Online (Sandbox Code Playgroud)

并且只想显示日期部分:start_date(即我想隐藏时间部分),有没有办法格式化:start_date视图内部的字符串,以便它可以用于创建新my_object项目和更新新my_object项目?

只是澄清一下:

<%= text_field 
       :my_object,
       :start_date,
       :value => @my_object.start_date.strftime('%m/%d/%Y') %>
Run Code Online (Sandbox Code Playgroud)

当对象已经存在时(即在项目更新时)工作得非常漂亮,但是,在创建项目时,由于start_date最初将为nil,因此视图将引发错误

while evaluating nil.strftime
Run Code Online (Sandbox Code Playgroud)

Dav*_*pin 35

这里有一些很棒的建议,但是在那些你确实想要将文本字段日期格式化为特定方式的情况下(比如说你正在使用javascript日期选择器进行集成),并且你正在处理nils,我想只是做一个小调整你现有的方法可以做到这一点:

:value => (@object.start_date.blank? ? '' : @object.start_date.strftime('%m/%d/%Y'))
Run Code Online (Sandbox Code Playgroud)


Ale*_*yra 7

我可以想到三种方式:

1)在模型上创建一个新方法,可以格式化您的日期,但是您需要它

2)创建一个可以执行相同操作的辅助方法

3)你有没有尝试过:

<%= text_field 
   :my_object,
   :start_date,
   :value => @my_object.try(:start_date).try(:strftime,'%m/%d/%Y') %>
Run Code Online (Sandbox Code Playgroud)