Ruby on rails rails-如何以美国格式显示和保存日期?

Ruby on rails rails-如何以美国格式显示和保存日期?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,rspec,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Rspec,我可以让我的内容\u日期以mm/dd/yyyy格式显示,并且我可以正确保存它。 如果其他数据中存在验证错误,则表单将以所需方式重新显示日期,即mm/dd/yyyy 我还可以编辑一条记录,并以mm/dd/yy格式查看日期 我遇到的问题是编辑记录会翻转月份和年份,以便 08/02/2012 变成 02/08/2012 及 根本不起作用 具有讽刺意味的是,如果我连续记录两次记录,并且一天不超过12天,它会翻转回原始值 视图: 我使用了新的和创建的(linkscontroller) 但是,updat

我可以让我的
内容\u日期
以mm/dd/yyyy格式显示,并且我可以正确保存它。 如果其他数据中存在验证错误,则表单将以所需方式重新显示日期,即
mm/dd/yyyy
我还可以编辑一条记录,并以mm/dd/yy格式查看日期

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

08/02/2012
变成

02/08/2012

根本不起作用

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

视图:

我使用了新的和创建的(
links
controller)

但是,
update
rails4.0.2
)现在才刚刚开始

def update
  redirect_to Link.find(params[:id]).tap { |link|
    link.update!(link_params)
  }
end
我不知道如何在更新中更改
:content\u date
,就像我在创建中所做的那样

仅供参考,我的
gem文件中有
american_date
gem,但它没有帮助(如果我删除它也没有帮助)

我目前在
config/initializers/

js日期选择器:

$ 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()));
});
我变了

/app/assets/javascripts/datepicker.js
改变

var format = 'yy-mm-dd';

to

var format = 'mm/dd/yyyy';
然后我添加了一个文件
config/inititlaizers/date format.js
,其中

# 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"
这有助于所有的显示和输入字段以及日期选择器,但日期仍然会翻转

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

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

你使用的是定制的日期选择器吗?我猜是这个日期选择器导致了这个问题。你用的是什么日期选择器?如果删除日期选择器,事情是否正常工作?提出了相同的问题。答案归结为修改jQueryDatePicker格式,即日期/时间默认格式,并使用gem。gem实质上修改了Ruby日期。\u parse方法。这意味着您不必编写变通代码来持久化应用程序中的每个日期字段。
var format = 'yy-mm-dd';

to

var format = 'mm/dd/yyyy';
# 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"
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