사람들이 나에게이 시점에서 잘못된 코드가 있다고 말했습니다. 이 방법의 주요 아이디어는 사용자가 한 번 누르면 1 개의 이벤트를 만들고, 사용자가 매일 또는 매주 누를 경우 이벤트 행을 만드는 것입니다. 모든 것이 잘 작동하지만 코드가 너무 부피가 큽니다.루비 코드 개선
def create
@event = Event.new(event_params
@event.start_time = DateTime.parse(params[:start_time], "%Y-%m-%d %H:%i")
@event.end_time = DateTime.parse(params[:end_time], "%Y-%m-%d %H:%i")
@event.user_id = current_user.id
@event.update_attributes(:repeat_id => @event.id) if @event.save
respond_to do |format|
if @event.save
format.html { redirect_to persons_profile_path }
else
format.html { render :new }
format.json { render json: @event.errors, status: :unprocessable_entity }
end
interval = 60 if @event.repeat =='daily'
interval = 20 if @event.repeat =='weekly'
#creating row of events
if @event.repeat != 'once'
(1..interval).each do |i|
@event = Event.new(event_params)
@event.start_time = DateTime.parse(params[:start_time], "%Y-%m-%d %H:%i")
@event.end_time = DateTime.parse(params[:end_time], "%Y-%m-%d %H:%i")
@event.user_id = current_user.id
if @event.repeat =='daily'
@event.start_time = DateTime.parse(@event.start_time.to_s) + i.day
@event.end_time = DateTime.parse(@event.end_time.to_s) + i.day
end
if @event.repeat =='weekly'
@event.start_time = DateTime.parse(@event.start_time.to_s) + i.week
@event.end_time = DateTime.parse(@event.end_time.to_s) + i.week
end
@event.update_attributes(:repeat_id => k) if @event.save
@event.save
end
end
다른 해결책을 찾을 수 없습니다. 어떤 아이디어? 날짜에 구문 분석 방법에주의를 기울이지 말고 JS에 필요합니다.
당신은 두 번째 줄에 ')'가 빠져있는 것처럼 보일 것입니다. 내 주요 질문은 코드가 작동하지 않거나 단지 비효율적으로 작성된다는 것입니다. 그것이 나중에 코드 검토로 옮겨야한다면, 코드 검토가 더 자세한 정보를 추가해야하는 경우 코드 검토로 이동해야합니다. –
이 코드에는 그 의미가 혼란 스러울만큼 많은 중복이 있습니다. 가장 먼저 수행해야 할 작업 중 하나는 특정 데이터에서 'DateTime.parse'와 같은 작업을 한 번 수행 한 다음 해당 값을 다시 사용하는 것입니다. 'if'를'case'로 접어서 어떤 오프셋을 사용할 것인지를 결정한 다음, 그 오프셋을 두 값에 모두 추가 할 수 있습니다. – tadman