Пользовательские действия и правильное перенаправление после успешной отправки

#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 … Есть какие — нибудь идеи ? Еще раз спасибо