2

这个问题与这个问题几乎相同:

除了最佳答案对我不起作用。我对 Ruby 和 RoR 都是新手,所以我不确定我到底在做什么。这是我到目前为止所拥有的。

我在我的 : 添加了默认的日期和时间格式en.yml

en:
  date:
    formats:
      default: '%d.%m.%Y'
  time:
    formats:
      default: '%H:%M'

我还使用以下代码添加了一个新的初始化程序:

Date::DATE_FORMATS[:default] = '%d.%m.%Y'
Time::DATE_FORMATS[:default] = '%H:%M'

当我去 Rails 控制台做Time.now.to_s或者Date.today.to_s我得到正确的结果时。例如,当从数据库中获取并显示在模型索引页面上时,它们也会正确显示。

但是,当我尝试创建一个带有一些日期和时间字段(不是日期时间!)的表单时,我得到了很好YYYY-MM-DD的日期,而整个YYYY-MM-DD HH:mm:ss.nnnnnn时间。

正确格式化这些输入值的最佳做法是什么?我想避免更改视图中的任何内容(就像在这里所做的那样),并在应用程序级别上正确解决这个问题 - 如果可能的话。

4

1 回答 1

3

这就是我最终做的事情:

首先,我在模型中定义了一个自定义字段:

  attr_accessible :entry_date_formatted

  def entry_date_formatted
    self.entry_date.strftime '%d.%m.%Y' unless self.entry_date.nil?
  end

  def entry_date_formatted=(value)
    return if value.nil? or value.blank?
    self.entry_date = DateTime.strptime(value, '%d.%m.%Y').to_date
  end

然后我将表格从更改entry_dateentry_date_formatted

<%= form.text_field :entry_date_formatted, :placeholder => 'Date' %>

最后但并非最不重要的一点是,我已将相关字段添加到我的语言环境文件中:

en:
  activerecord:
    attributes:
      time_entry:
        entry_date_formatted: Entry date
        start_time_formatted: Start time
        end_time_formatted: End time

这可能不是最好的方法,但它现在对我很有用。

于 2012-09-01T13:41:16.163 回答