2011-12-28 65 views
3

我有一个迁移:日期字段和轨道的TextInput

def change 
    create_table :tasks do |t| 
     t.date :date, :null => false 
    end 
    end 

和一个视图:

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

的问题是

  1. 为什么我有“2011-12 -23 00:00:00“而不是”2011年12月23日“已经在数据库中的记录?在数据库中,它们处于“2011-12-23”格式。

  2. 如何内部日期,所以我可以有像“12.23.11”日期。

+0

您正在使用什么数据库?我执行了[这些命令](https://gist.github.com/d5c2d25df5988b45e163),设置'root:to => tasks#index',然后创建一个新任务,并且所有事情都按预期工作(即没有结尾00:00 :00)。 – Alex 2012-01-04 10:14:01

回答

6

我想你可以使用值选项和i18n API/l助手。喜欢的东西:

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

然后在您的区域设置文件:

# config/locales/your_locale.yml 
your_locale: 
    date: 
    formats: 
     # Whatever format that fits your needs 
     default: "%d/%m%/%Y" 
0

做一个帮手,将采取价值和吐出的东西更好

def prettifydate(ugly) 
    return ugly.strftime('%m.%d.%Y') 
end 

在您的形式,取值为辅助方法,并返回漂亮的字符串。

<%= form_for @task do |f| %> 
    <%= f.text_field :date, :value => prettifydate(@task.date) %> 
<% end %> 
+0

这里有两个问题。首先,钢轨已经有了像这个帮手那样的自己,所以制作另一个钢管并不是一个好主意。其次,i18n发动机在轨道上并不好。 – Ximik 2011-12-31 09:47:14