Rails로 캘린더를 간단하게 처리할 수 있는 단순함.달력 달력에 창 만들기
9887 단어 simple_calendarRubyRails
개시하다
나는 Rails에서 달력simple_calendar을 간단하게 처리할 수 있는gem의 존재를 알았다.
따라서 매주 표시되는 달력에 각자 날짜에 예정된 양식을 넣으면 어떤 느낌을 받을지 샘플을 만들면서 검증했다.
읽는 데 편리하도록 햄을 도입하여view를 시도하고 싶습니다.
환경의 전제 조건
목표
매주 표시되는 달력을 만드는 것을 목표로 매일 입력 형식이 있습니다.
절차.
1. 초기 설정
새 rails 프로그램
다음 명령을 실행합니다.
$ rails new calendar-sample
$ cd calendar-sample
Gem 설치
이번에 사용한 simple_calendar,haml-rails를 설치합니다.
Gemfile
# 追記
gem 'simple_calendar', '~> 2.0'
gem 'haml-rails'
$ bundle
simple_calendar 보기 템플릿 만들기
그다음에 단순.calendar의 디자인을 수정하기 위해 템플릿을 생성합니다.
$ rails g simple_calendar:views
haml로 변환
haml-rails 명령을 사용하여 haml로 변환합니다.
$ rake haml:erb2haml
샘플 모델 만들기
scaffold를 사용하여 디스플레이를 확인하는 미팅 모델을 만듭니다.
$ rails g scaffold Meeting name start_time:date content:string
simple_캘린더 디스플레이 설정
달력을 주 단위로 표시할 수 있도록 단순callendar를 설정합니다.
app/views/meetings/index.html.haml
-# 追記
= week_calendar do |date|
= date
보기
서버를 시작합니다.
$ rails db:migrate
$ rails s
방문http://localhost:3000/meetings하여 주간 달력이 표시되는지 확인합니다.2. 달력의 양식 제작
로그인
routes에서 데이터를 통일적으로 등록하는 방법을 정의합니다.
config/routes.rb
Rails.application.routes.draw do
resources :meetings do
collection do
post :update_week
end
end
end
view 설치
매일 콘텐츠를 입력할 수 있는 창을 실현합니다.
app/views/meetings/index.html.haml
-# 以下に書き換え
%h1 Week Meetings
= form_for :meeting, url: update_week_meetings_path, html: { method: :post } do
= week_calendar do |date|
= date
- meeting = @meetings.find_or_initialize_by(start_time: date)
- if meeting.id.nil?
%p
= hidden_field_tag "meeting[#{date}][start_time]", date
%p
= text_field_tag "meeting[#{date}][content]"
- else
= fields_for "meeting[]", meeting do |meeting_fields|
%p
= meeting_fields.hidden_field :start_time
%p
= meeting_fields.text_field :content
= submit_tag
방법find_or_initialize_by
으로 새로운 기록과 편집을 지원할 수 있습니다.이 밖에 처리는 유무
meeting.id
로 나뉘는데 이것은 조회 매개 변수의 형식을 통일시키기 위한 것이다.기존 데이터는 id를 키로 산열에 저장되고, 새로운 데이터는 id가 없기 때문에 산열로 저장됩니다.
id가 있는 경우
"meeting"=>
{"1"=>{"start_time"=>"2018-07-02", "content"=>"A"},
"2"=>{"start_time"=>"2018-07-03", "content"=>"B"}}
id가 없는 경우 "meeting"=>
[{"start_time"=>"2018-07-02", "content"=>""},
{"start_time"=>"2018-07-03", "content"=>""}]
따라서 POST에 배열의 질의 매개 변수를 포함하려면 다음과 같은 오류가 발생하므로 해싱을 함께 사용할 수 있습니다.Rack::QueryParser::ParameterTypeError (expected Hash (got Array) for param `meeting'):
참조 링크
controller 설정
view를 통해 입력한 여러 날의 데이터를 통일적으로 등록하고 업데이트하는 방법입니다.
app/controllers/meetings_controller.rb
# 追記
def update_week
week_meetings_params.keys.each do |key|
@meeting = Meeting.find_or_initialize_by(start_time: week_meetings_params[key][:start_time].to_date)
@meeting.update_attributes(week_meetings_params[key])
end
redirect_to meetings_path
end
# 中略...
private
# 追記
def week_meetings_params
params.require(:meeting).permit!
end
방문http://localhost:3000/meetings하여 매주 폼을 업데이트할 수 있는지 확인합니다.끝맺다
갑작스럽게 제작된 샘플이라 거친 부분이 있을 수 있지만 단순캘린더를 사용하여 주 디스플레이 형식을 테스트할 수 있습니다.나는 달력 부분을 간단하게 처리하는 것이 매우 편리하다고 생각한다.
참조 링크
Reference
이 문제에 관하여(Rails로 캘린더를 간단하게 처리할 수 있는 단순함.달력 달력에 창 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gotchane/items/dd2860ed1f33bd635914텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)