【Rails】날짜의 입력 폼의 작성과 브라우저에의 출력에 관한 정리
소개
rails에서의 WEB어플리 개발중에 있어서, 날짜 관계의 취급으로 고민했으므로 그 비망록입니다.
하고 싶은 일
html의 input 태그에는 type="date"를 지정할 수 있습니다.
이 기능을 그대로 이용하여 입력 양식을 작성합니다.
이 속성은 특수 날짜 선택 인터페이스를 사용하여 사용자가 날짜를 입력하게하는 입력 필드를 생성합니다. 결과 값에는 연도, 월, 일이 포함되지만 시간은 포함되지 않습니다.
브라우저에 의해 인터페이스는 마을 거리입니다.
input 태그
안드로이드의 chorome에서는 다음 이미지와 같이 표시됩니다.
서투른 스스로 폼을 만드는 것보다, 사용성이 높다고 생각합니다.
Ruby strftimr 메서드로 표시할 형식을 정렬합니다.
Ruby의 strftime 메소드는 날짜와 날짜와 시간의 데이터를 편집하여 문자열로 변환하는 메소드입니다.
예를 들어, "2019-12-27 16:04:05"와 같은 일시 데이터를 "12/27"만 표기하고 싶은 경우가 있습니다.
오히려 시간으로 초단위까지 표시할 필요가 있을 때 쪽이 적은 것이라고 느낍니다.
strftime 메소드는 위와 같은 포맷을 정돈할 때 사용하면 편리합니다.
【문제점】datetime형과 date속성의 궁합이 나쁘다
input 태그 속성 date를 사용하는 이점과 strftime 메소드의 편의성을 이해할 수 있었습니까?
이 두 가지를 결합하면 다음 제약이 방해합니다.
1. input 태그 속성 date는 날짜 밖에 입력할 수 없다
2. strftime 메소드는 일자·시간 어느 쪽인가가 NULL이면 사용할 수 없다
- 부수적으로, strftime 메소드를 사용해 참조할 수 있는 테이블의 컬럼형은 datetime일 필요가 있다
요약하면 input 태그 속성 date로 그대로 저장해도 strftime 메서드를 사용할 수 없습니다.
【해결책】 일단 교체
to_datetime 메소드
date 형식을 datetime 형식으로 바꿉니다. 이 때 설정되어 있지 않은 시각의 데이터에는 0이 옮겨집니다.
절차
html의 input 태그에는 type="date"를 지정할 수 있습니다.
이 기능을 그대로 이용하여 입력 양식을 작성합니다.
이 속성은 특수 날짜 선택 인터페이스를 사용하여 사용자가 날짜를 입력하게하는 입력 필드를 생성합니다. 결과 값에는 연도, 월, 일이 포함되지만 시간은 포함되지 않습니다.
브라우저에 의해 인터페이스는 마을 거리입니다.
input 태그
안드로이드의 chorome에서는 다음 이미지와 같이 표시됩니다.
서투른 스스로 폼을 만드는 것보다, 사용성이 높다고 생각합니다.
Ruby strftimr 메서드로 표시할 형식을 정렬합니다.
Ruby의 strftime 메소드는 날짜와 날짜와 시간의 데이터를 편집하여 문자열로 변환하는 메소드입니다.
예를 들어, "2019-12-27 16:04:05"와 같은 일시 데이터를 "12/27"만 표기하고 싶은 경우가 있습니다.
오히려 시간으로 초단위까지 표시할 필요가 있을 때 쪽이 적은 것이라고 느낍니다.
strftime 메소드는 위와 같은 포맷을 정돈할 때 사용하면 편리합니다.
【문제점】datetime형과 date속성의 궁합이 나쁘다
input 태그 속성 date를 사용하는 이점과 strftime 메소드의 편의성을 이해할 수 있었습니까?
이 두 가지를 결합하면 다음 제약이 방해합니다.
1. input 태그 속성 date는 날짜 밖에 입력할 수 없다
2. strftime 메소드는 일자·시간 어느 쪽인가가 NULL이면 사용할 수 없다
- 부수적으로, strftime 메소드를 사용해 참조할 수 있는 테이블의 컬럼형은 datetime일 필요가 있다
요약하면 input 태그 속성 date로 그대로 저장해도 strftime 메서드를 사용할 수 없습니다.
【해결책】 일단 교체
to_datetime 메소드
date 형식을 datetime 형식으로 바꿉니다. 이 때 설정되어 있지 않은 시각의 데이터에는 0이 옮겨집니다.
절차
위의 프로세스에서 오류를 토하지 않고 실행할 수있었습니다.
실제 처리
양식
new.html.erb
<!-- 日付 -->
<div class ="input-date">
<input name="date" type="date" />
</div>
컨트롤러에서 입력 양식에서 값 수신
posts_controller.rb
@homework_post = Hindext.new(deadline:params[:date])
@homework_post.save
view로 보충 (본래 컨트롤러로 해야 할 처리입니다만 편리하게 view 파일로 하고 있습니다.)
new.html.erb
<!-- 日付 -->
<% date = index.deadline %>
<% dated = date.to_datetime %>
<%= dated.strftime('%m/%d') %>
문제없이 작동했습니다.
요약
다양한 벽이있어 피곤합니다.
Reference
이 문제에 관하여(【Rails】날짜의 입력 폼의 작성과 브라우저에의 출력에 관한 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/squarekzmlviy/items/88e97d3ae3992cfd09da
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Rails】날짜의 입력 폼의 작성과 브라우저에의 출력에 관한 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/squarekzmlviy/items/88e97d3ae3992cfd09da텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)