2014-11-12 3 views
0

나는 많은 날짜 "텍스트 입력"을 처리하는 Rails 3.0.7 응용 프로그램을 이탈리아어 형식 (%d/%m/%Y)으로 사용하고 있습니다.Rails 3.0.x에서 이탈리아어 형식으로 날짜 텍스트를 입력

여기
12/11/2014 (%d/%m/%Y) 

가 제대로 아무 문제없이 날짜를 저장 난간 : 내 리눅스 박스에

내가 이탈리아어 형식으로 날짜 2014년 11월 12일 박스 응용 프로그램을 실행하고 텍스트에 삽입 (이탈리아어 로케일로 구성) 그래서 내 입력, 날짜가 잘못 월과 일 부품을 교환 저장된 원격 프로덕션 서버에

27/11/2014 (%d/%m/%Y) 

:

, 같은 일 나는 2014년 11월 27일 같은 날짜를 삽입 할 경우

나는 것을 생각 ... (27)가 유효한 달이 아니기 때문에

27/11/2014 

는 예외를 발생 :

11/12/2014 

및 날짜 입력 :

12/11/2014 
잘못 날짜에 저장됩니다 프로덕션 서버에 문제가되는 것은 날짜 형식 시스템 설정이 잘못된 것입니다 ( mm/dd/yyyy ...)하지만 서버는 plesk 패널에 의해 관리되며 날짜 형식 시스템 설정과 관련된 내용을 참조하십시오 ...

그래서 질문입니다. 레일즈에서 무엇을 구성 할 수 있습니까? 3.0.x) 그래서 나는 이탈리아어 형식의 텍스트 필드 날짜 입력을 저장할 수 있습니까? 사전에

많은 감사를 ... (아마도 ... 코드의 gazillion를 작성하는 피)

첫 번째 단계는 로케일 설정해야
+0

왜'date_field' 대신'text_field'의 사용하지? 그리고 실제로 텍스트 필드를 사용하려면 jQuery UJS와 같은 jQuery 날짜 선택기 라이브러리를 사용하는 것이 좋습니다. – Surya

+0

감사합니다. date_field는 v. 4.0.2에서 시작하여 Rails 3.0.7 레거시 응용 프로그램을 유지하고 있습니다. 예, jquery datepicker와 formtastic을 사용하고 있습니다 ... – giates

답변

0

루비 1.8에서 사용하는 날짜 형식 변환 %의 m/% D/% Y, 1.9 버전은 대신 % d/% m/% Y 날짜 형식을 사용하므로 th 전자 솔루션은 루비 1.9.x로 전환하는 것 같습니다 ...

예, 날짜 28 12 월 2015 구문 분석됩니다 :

In Ruby 1.8: Date.parse("28/01/2015") 
In Ruby 1.9: Date.parse("01/28/2015") 
0

: 다루는

# config/initializers/locale.rb 
I18n.default_locale = :it 

몇 가지 옵션을 입력과 :

1. 당신이 검증을 얻을 수 있기 때문에 난 정말이 추천 HTML5 날짜 입력 또는 자바 스크립트 "날짜 선택기"

로 텍스트 입력을 교체 싸고 좋은 특징.

2. .strptime

params_with_dates = params.merge({ 
    "date" => Date.strptime(params["date"], '%d/%m/%Y') 
}) 

Foo.create(params_with_dates); 

추가 독서 과제 :

+0

많은 감사 ... 약 100 모델 (그리고 약 100 컨트롤러), 각 모델은 약 20 날짜 필드를 가지고,이 접근법을 사용하여 각 날짜 필드 (2000 loc ...)에 대한 한 줄로 각 컨트롤러에 메서드를 작성해야합니다, 거기에 더 나은 너무 많은 loc 작성을 피하기위한 해결책? – giates

+0

날짜와 함께'I18n.default_locale'을 사용하려하지 않았지만, 개발 상자에있는 동작을 복제해야한다고 생각합니다. – max