events.new.erbでパラメーターがうまく取得することができません。。
Ruby on Railsでfullcalendarを利用した予定管理アプリを作成しながら勉強中です。
jqueryで終日(checkbox)をチェックしたら、class="hidden-if-allday"のdatetime_selectとclass="visible-if-allday"のdate_selectを切り替えています。
sccsで、class="visible-if-allday"をdisplay: none;にしておいて、チェックすると表示させるようにしています。
events.new.erbで、終日をチェックせず、datetime_selectで、startの値を選んで、submitした時、選んだ日付がうまく受け取れません。datetime_select、date_selectの両方とも名称を、startとしていることが原因でしょうか?それとも、jqueryの原因なのでしょうか?
よろしければ、ご教授お願いします。
Ruby
1...events_controller.rb 2 def new 3 @event = Event.new 4 time0 = Time.current.beginning_of_hour 5 @event.start = time0.advance(hours: 1) 6 @event.end = time0.advance(hours: 2) 7 end 8 9 def create 10 @event = Event.new(event_params) 11 @event.user_id = @current_user.id 12 if @event.allDay? 13 @event.start = @event.start.beginning_of_day 14 @event.end = @event.end.tomorrow.beginning_of_day 15 end 16 respond_to do |format| 17 if @event.save 18 format.html { redirect_to '/events/index',notice: 'Event was successfully created.' } 19 format.json { render :show, status: :created, location: @event } 20 else 21 format.html { render :new } 22 format.json { render json: @event.errors, status: :unprocessable_entity } 23 end 24 end 25 end 26 27 private 28 def set_event 29 @event = Event.find_by(id:params[:id]) 30 end 31 32 def event_params 33 params.require(:event).permit( 34 :title, 35 :start, 36 :end, 37 :place, 38 :description, 39 :allDay 40 ) 41 end
html
1events/new.html.erb 2.... 3 <div class="form-group form-allDay"> 4 <div class="group-label"> 5 <%= f.label :allDay, "allDay" %> 6 </div> 7 <div class="group-inner"> 8 <%= f.check_box :allDay, :as => :boolean %> 9 </div> 10 </div> 11 <div class="form-group hidden-if-allday"> 12 <div class="group-label"> 13 <i class="fas fa-2x fa-angle-double-right"></i> 14 </div> 15 <div class="group-inner"> 16 <%= f.datetime_select :start %> 17 </div> 18 </div> 19 <div class="form-group hidden-if-allday"> 20 <div class="group-label"> 21 <i class="fas fa-2x fa-angle-double-left"></i> 22 </div> 23 <div class="group-inner"> 24 <%= f.datetime_select :end %> 25 </div> 26 </div> 27 <div class="form-group visible-if-allday"> 28 <div class="group-label"> 29 <i class="fas fa-2x fa-angle-double-right" ></i> 30 </div> 31 <div class="group-inner> 32 <%= f.date_select :start %> 33 </div> 34 </div> 35 <div class="form-group visible-if-allday"> 36 <div class="group-label"> 37 <i class="fas fa-2x fa-angle-double-left"></i> 38 </div> 39 <div class="group-inner"> 40 <%= f.date_select :end %> 41 </div> 42 </div> 43....
js
1 2$(document).on('change', '#event_allDay', function(){ 3 var form = $('.new_event,.index_event,.edit_event'); 4 var checkBox = $('#event_allDay'); 5 var allDay = checkBox.prop('checked'); 6 form.find('.visible-if-allday').toggle(allDay); 7 form.find('.hidden-if-allday').toggle(!allDay); 8});
sccs
1 .visible-if-allday { 2 display: none; 3 }
あなたの回答
tips
プレビュー