2

저는 호주 웹 사이트의 레일 프로젝트 작업을하고 있습니다. 결과적으로 미국 중심의 'mm/dd/yyyy'보다는 'dd/mm/yyyy'의 유럽 표준으로 날짜 형식을 입력 할 수 있기를 원합니다. Date 필드가있는 ActiveRecord 모델이 있습니다. jQuery의 datepicker를 사용하여 텍스트 필드에서 날짜 선택을 제공하고 날짜를 적절한 형식으로 설정했습니다. 그러나 레코드를 저장하려고하면 날짜가 잘못됩니다. 심지어 i18n 가이드에 따라 인 타이 마이 져에서 사용자 정의 날짜 형식을 설정했습니다.Rails ActiveRecord 날짜 구문 분석 (특히 유럽 날짜 형식)

>> b = BlogPost.new 
>> b.posted_on = '20/07/2010' 
=> "20/07/2010" 
>> b.posted_on 
=> nil 
>> b.posted_on = '07/20/2010' 
=> Tue, 20 Jul 2010 

레일스는 Date.parse를 사용하여 문자열을 Date 객체로 변환하는 것 같습니다. 전체 프로젝트에서이 문제를 해결할 방법이 있습니까? 각 모델에 대한 사용자 정의 코드를 작성하지 않아도됩니다.

답변

2
class Date 
    class << self 
    def _parse_with_us_format(date, *args) 
     if date =~ %r{^(\d+)/(\d+)/(\d+)$} 
     _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args) 
     else 
     _parse_without_us_format(date, *args) 
     end 
    end 
    alias_method_chain :_parse, :us_format 
    end 
end 
+0

솔루션 작품을 찾아 간단합니다 (설정/environment.rb에에) 기본 날짜 형식을 변경합니다. 보다 포괄적 인 솔루션이 필요한 경우 [delocalize] (https://github.com/clemens/delocalize) 또는 [i18n_alchemy] (https://github.com/carlosantoniodasilva/i18n_alchemy)를 참조하십시오. – Mike