2010-10-30 79 views
0

我有一個從jQuery UI Datepicker填充日期的文本字段。根據用戶在我的網站上的配置文件中選擇的日期格式,日期選擇器將使用DD-MM-YYYY或MM-DD-YYYY填充文本字段。如果日期填寫爲DD-MM-YYYY,則Ruby on Rails會正確解釋此日期,並且日期被正確存儲。但是當它是MM-DD-YYYY時,Ruby on Rails仍然認爲它是DD-MM-YYYY,所以日期存儲不正確。我怎樣才能改變Rails期待的日期格式?帶日期的文本字段,如何更改Rails期望的日期格式?

回答

1

您可以使用Date.strptime使用任何你想要的格式:

>> RUBY_DESCRIPTION 
=> "ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]" 

>> require 'date' 
=> true 

>> Date.strptime('03/04/2010', '%d/%m/%Y').strftime('%c') 
=> "Sat Apr 3 00:00:00 2010" 

>> Date.strptime('03/04/2010', '%m/%d/%Y').strftime('%c') 
=> "Thu Mar 4 00:00:00 2010" 

所以第一個是採取03爲一個月的一天,而第二個是把它作爲一個月。

0

您可以發送帶日期的參數(即:reverse => true),以便在日期由Rails解析之前,在控制器中可以反轉數字(如果需要)。

1

在我的愚見,你不應該使用服務器端代碼來修復或解決視圖問題。 您的服務器代碼應該只包含一種格式,並且視圖應該以用戶想要的任何方式顯示它。

如果在兩個月內爲應用程序添加新的語言環境,則只需更改視圖,而不是服務器代碼!

一個解決方案應該是使用隱藏字段。隱藏字段填充了服務器處理的格式(例如%d /%m /%Y格式)。 用於日期選擇器的文本字段應該是一個簡單的text_field_tag,它將被Rails忽略。

使用ONSELECT回調: http://jqueryui.com/demos/datepicker/#event-onSelect

填補了隱藏字段與格式良好的,當用戶選擇在日期選擇器:)一個新的日期。

0

可能會有所幫助。

a = "10-30-2010".split('-') 
a[0],a[1] = a[1],a[0] 
a = a.join('-')