2017-08-26 76 views
0

我有一個Rails 4應用程序,我們必須向用戶顯示日期選擇器,但顯示的選擇日期應爲MM-DD-YYYY格式。在將日期發送到Rails時,ActiveRecord無法識別該格式,我知道它預計爲YYYY-MM-DD。驗證失敗(日期不存在)。Datepicker選擇日期格式爲Rails後端

的JS如下:

$("#some_date").datetimepicker 
    pickTime: false 
    format: 'MM-DD-YYYY' 

(顯示的偉大工程與出現一個極好的日期選擇器)。

然後我苗條的模板:

= f.input :date, as: :string, label: false, input_html: { class: 'form-control', value: @visit.date.strftime('%m-%d-%Y') } 
p.help-block MM-DD-YYYY 

如果我改變格式YYYY-MM-DD它完美的作品和日期保存到PostgreSQL的作爲,然而在美國,日期通常顯示爲MM-DD-YYYY

我也不想過於使用幫助器方法或在每個控制器上從html輸入轉換日期,所以PostgreSQL很高興。我想知道是否有某種方式可以更改日期格式,因爲它會轉到後端?

在我的config/locales/en.yml,我有:

date: 
    formats: 
    default: '%m/%d/%Y' 

乾杯!

回答

0

Bootstrap datetimepicker似乎沒有選擇將備選格式發送到服務器。但是,如果你只需要一個日期選擇器並且你不關心時間,那麼你可以試試JQuery datepicker。它允許你發送一個dateFormat來顯示,併發送一個altFormat到服務器。

0

在jquery中,有一個叫做altFormat的字段可以使用。數據庫列不包含時區信息,但時區隱含爲UTC。您可以使用模型方法來獲取所需的格式。我可以使用模型方法解析特定格式,而不是以特定格式保存數據庫。

def your_date 
    self[:column_name].strftime("%m-%D-%Y") 
end 

並且還想在解析爲格式之前根據用戶時區更改時間。

user_record = db_query.your_date 
current_user.zone.parse(user_record) 

這裏有一些參考文獻可能對您有所幫助。

http://brendankemp.com/essays/dealing-with-time-zones-using-rails-and-postgres/ https://apidock.com/ruby/DateTime/strftime

PS:如果你能找到一些其他更好的辦法PLZ做後期。

相關問題