Построение мастера в Ruby on Rails - PullRequest
2 голосов
/ 09 февраля 2012

Итак, я пытаюсь создать мастер для моих пользователей при регистрации. Я не могу использовать JavaScript (то, что я нашел, является общим решением для такого рода форм.) Причина в том, что каждая страница в моем мастере сильно зависит от Javascript, что означает, что загрузка всего за один раз займет много времени. И, о, волшебник имеет дело с 3 различными ресурсами.

Я пробовал один из подходов, на котором я сейчас застрял, и, честно говоря, он не чувствует себя правильным.

(SIDENOTE: пользователь получает камень с приличной экспозицией)

Это мой мастер-контроллер:

  def index
    case current_step
      when 'description'
        render 'users/edit'
      when 'contact'
        render 'contact_informations/edit'
      when 'location'
        render 'location/edit'
    end
  end

  def current_step
    @current_step || STEPS.first
  end

  def next_step
    @current_step = STEPS[STEPS.index(current_step)+1]
    index
  end

  def previous_step
    @current_step = STEPS[STEPS.index(current_step)-1]
    index
  end

  def final_step
    @current_step == STEPS.last
  end

Тогда у меня есть одно действие обновления для каждого из ресурсов (это тот же мастер-контроллер)

 def update_description

    if user.update_attributes(params[:user])
      next_step
    else
      redirect_to user_wizard_path(user)
    end
  end

  def update_contact_information
    # Do stuff here
  end

  def update_location
    # Do stuff here
  end

Кажется, что есть проблема с вызовом действий из одного контроллера. И на основании того, что я никогда не видел, чтобы это было сделано раньше, это кажется неправильным.

Что я пытаюсь сделать простым: Я не хочу загромождать оригинальные REST-контроллеры ресурсов. Я хочу, чтобы каждый шаг был подтвержден Если происходит сбой update_attributes, перерисовать форму с ошибками. Если атрибут update_attributes успешен, выполните следующий шаг.

Я пришел к выводу, что мой выстрел в это не сработает, и я не чувствую, что это «рельсовый путь» в выполнении вещей. Я наблюдал, как Райан Бейтс транслировал «многоэтапные формы», но даже после этого я не могу этого понять.

Заранее спасибо. Тим

1 Ответ

3 голосов
/ 20 марта 2012

проверьте злой драгоценный камень, вы можете найти его полезным

https://github.com/schneems/wicked

...