#ruby-on-rails #redirect #controller
#ruby-on-rails #перенаправление #контроллер
Вопрос:
На самом деле я работаю над небольшим приложением, в котором пользователь может создать событие. Это должно быть сделано в три этапа. Для достижения этого я создал два пользовательских действия в соответствующем контроллере. У каждого представления есть форма, использующая update
URL. Затем я настроил метод обновления таким образом:
def training
@event = Event.find(params[:event_id])
@coach = Coach.find(@event.coach_id)
end
def confirm
@event = Event.find(params[:event_id])
end
def update
respond_to do |format|
if @event.update(event_params)
if params[:commit] == 'next'
format.html { redirect_to booking_event_confirm_path(@event), notice: 'Event was successfully updated.' }
else
format.html { redirect_to booking_event_path(@event), notice: 'Event was successfully updated.' }
end
else
if params[:commit] == 'next
format.html { render :training }
else
format.html { render :edit }
end
end
end
end
Как новичок в Rails, я был бы рад получить некоторую обратную связь… Кажется ли это нормальным, или это был бы лучший способ достичь моей цели?
Заранее спасибо!
Ответ №1:
Ваше решение неплохое, но есть способ получше для его достижения. Я бы посоветовал вам проверить Wicked gem и это руководство.
В общем, погуглите мастер или многоступенчатую форму.
Комментарии:
1. Спасибо вам за ваш быстрый ответ! Кстати, я добавляю проверки и заметил, что при ошибке
render :training
происходит странное поведение: отображение в порядке, но URL изменен сbooking/events/:id/training
наbooking/events/:id
… Есть какие — нибудь идеи ? Еще раз спасибо