Ruby on rails 3 rails中的日期字段和文本输入

Ruby on rails 3 rails中的日期字段和文本输入,ruby-on-rails-3,activerecord,internationalization,Ruby On Rails 3,Activerecord,Internationalization,我有一个迁移: def change create_table :tasks do |t| t.date :date, :null => false end end 还有一个观点: <%= form_for @task do |f| %> <%= f.text_field :date %> <% end %> 问题是 为什么对于数据库中已经存在的记录,我使用“2011-12-23 00:00:00”而不是“20

我有一个迁移:

  def change
    create_table :tasks do |t|
      t.date :date, :null => false
    end
  end
还有一个观点:

<%= form_for @task do |f| %>
<%= f.text_field :date %>
<% end %>

问题是

  • 为什么对于数据库中已经存在的记录,我使用“2011-12-23 00:00:00”而不是“2011-12-23”?在数据库中,它们是“2011-12-23”格式

  • 如何将日期内化,使我可以有“12.23.11”这样的日期


  • 制作一个助手,它将获取价值并吐出更好的东西

    def prettifydate(ugly)
       return ugly.strftime('%m.%d.%Y')
    end
    
    在表单中,将该值作为helper方法并返回漂亮的字符串

    <%= form_for @task do |f| %>
       <%= f.text_field :date, :value => prettifydate(@task.date) %>
    <% end %>
    
    
    prettifydate(@task.date)%>
    
    我想您可以使用value选项和i18napi/l帮助器。比如:

    <%= f.text_field :date, :value => l(@model.date) %>
    

    这里有两个问题。首先,rails已经有了自己的smth,比如这个助手,所以再做一个不是一个好主意。第二,rails中的i18n引擎不太好。您使用的是什么数据库?我确实执行了,设置了
    root:to=>tasks#index
    ,然后创建了一个新任务,一切都按预期进行(即没有后续的00:00:00)。
    # config/locales/your_locale.yml
    your_locale:
      date:
        formats:
          # Whatever format that fits your needs
          default: "%d/%m%/%Y"