我可以让我的content_date
以mm/dd/yyyy格式显示,我可以正确保存它。如果我在其他数据中有验证错误,则表单以所需的方式重新显示日期,即mm/dd/yyyy
我还可以编辑记录并以mm/dd/yy
我的问题是编辑记录翻转了月份和年份,所以
08/02/2012
是
02/08/2012
和
08/19/2012
根本不起作用
具有讽刺意味的是,如果我连续记录记录两次,并且日期不超过12,它会翻转回原始值
视图:
= f.text_field :content_date, id: 'datepicker', size: 10
我得到了新的和创建与(links
控制器)工作
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
)现在只是
def update
redirect_to Link.find(params[:id]).tap { |link|
link.update!(link_params)
}
end
和我不知道如何改变:content_date
在更新的方式,我在create
供您参考,我有american_date
宝石在我的Gemfile
,但它没有帮助(如果我删除它也没有帮助)。
目前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