关于ruby:rails-如何以我们的格式显示和保存日期?

rails - how to show and save a date in us format?

我可以让我的content_date以mm / dd / yyyy格式显示,并且可以正确保存。
如果我在其他数据中存在验证错误,则表单将以所需方式重新显示日期,该方式为mm/dd/yyyy
我还可以编辑记录并以mm / dd / yy

格式查看日期

我遇到的问题是,编辑记录会翻转月份和年份,这样

1
08/02/2012

成为

1
02/08/2012

1
08/19/2012

根本不起作用。

具有讽刺意味的是,如果我连续两次记录记录,并且一天不超过12天,它将翻转回原始值

查看:

1
= f.text_field :content_date, id: 'datepicker', size: 10

我刚开始创建并可以使用(links控制器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def new
  @link = Link.new
  @link.content_date=Time.new().strftime("%m/%d/%Y")
  ...

def edit
  @link = Link.find(params[:id])
  @link.content_date=Time.new().strftime("%m/%d/%Y") if @link.content_date.nil?

def create
  @link = Link.new(link_params)

  if @link.content_date.nil?
    @link.content_date = Time.new().strftime("%Y/%m/%d")
  else
    @link.content_date = @link.content_date.strftime("%Y/%m/%d")
  end

但是update(rails 4.0.2)现在只是

1
2
3
4
5
def update
  redirect_to Link.find(params[:id]).tap { |link|
    link.update!(link_params)
  }
end

,我不知道如何在更新中更改:content_date,就像我在create

中所做的那样

fyi我的Gemfile中有american_dateruby,但是它没有帮助(并且如果我将其删除也无济于事)。

我目前在config/initializers/

中没有任何日期初始值设定项

js日期选择器:

1
2
3
4
5
6
7
8
9
10
11
$ cat app/assets/javascripts/date-picker.js

$(function() {
$("#datepicker" ).datepicker();
});
$(function(){
var dateInput = $("#datepicker");
var format = 'yy-mm-dd';
dateInput.datepicker({dateFormat: format});
dateInput.datepicker('setDate', $.datepicker.parseDate(format, dateInput.val()));
});


我改变了

1
/app/assets/javascripts/datepicker.js

更改

1
2
3
4
5
var format = 'yy-mm-dd';

to

var format = 'mm/dd/yyyy';

然后我用

添加了文件config/inititlaizers/date-format.js

1
2
3
4
5
6
7
8
9
10
11
# Date
# ----------------------------
Date::DATE_FORMATS[:default] ="%m/%d/%Y"

# DateTime
# ----------------------------
DateTime::DATE_FORMATS[:default] ="%m/%d/%Y"

# Time
# ----------------------------
Time::DATE_FORMATS[:default] ="%m/%d/%Y %H:%M:%S"

这有助于所有显示和输入字段以及日期选择器,但日期仍然翻转。

最后(此位修复了日期翻转部分),我将控制器更改为:

1
2
3
4
5
6
7
8
9
10
def update

  r = Link.find(params[:id])
  r.tap { |link|
    link.update!(link_params)
  }
  r.update!(:content_date => link_params[:content_date].to_date.strftime("%Y-%d-%m"))
  redirect_to r

  end