Rails 3 - Multi-form Wizard - Попытка редактирования записи не сохраняет значения - PullRequest
0 голосов
/ 14 июля 2011

Я занимаюсь мастером мультиформ, следуя инструкциям Райана Бейтса . Создание новой записи работает, поэтому я пытался использовать ту же логику при редактировании записи. Однако значения, которые я изменяю, не меняются - когда я что-то редактирую из первой формы, иду вперед, а затем назад, мои изменения не сохраняются. Вот код в моем контроллере:

  def edit
    session[:edit] = "Only change the fields you wish to edit"
    @demographic = Demographic.find(params[:id])
    session[:demographic_params] ||= {}  
  end

  def update
    session[:demographic_params].deep_merge!(params[:demographic]) if params[:demographic]  
    @demographic = Demographic.find(params[:id])
    @demographic.current_step = session[:demographic_step]
    if params[:back_button]
      @demographic.previous_step
    elsif @demographic.last_step?
      @demographic.update_attributes(params[:demographic])
      updated = true 
    else
      @demographic.next_step
    end    
    session[:demographic_step] = @demographic.current_step
    if not updated
      render "edit"
    else
      session[:demographic_params] = session[:demographic_step] = nil
      flash[:notice] = "Entry entered successfully"
      redirect_to demographic_path
    end
  end

Что я должен изменить, чтобы сохранить изменения?

1 Ответ

1 голос
/ 26 сентября 2011

Я не знаю, сработает ли это, но я думаю, что должно быть что-то вроде этого, чтобы сэкономить на каждом "шаговом изменении":

  def update
    session[:demographic_params].deep_merge!(params[:demographic]) if params[:demographic]  
    @demographic = Demographic.find(params[:id])
    @demographic.current_step = session[:demographic_step]
    @demographic.update_attributes(params[:demographic])
    if params[:back_button]
      @demographic.previous_step
    elsif @demographic.last_step?
      updated = true 
    else
      @demographic.next_step
    end    
    session[:demographic_step] = @demographic.current_step
    if not updated
      render "edit"
    else
      session[:demographic_params] = session[:demographic_step] = nil
      flash[:notice] = "Entry entered successfully"
      redirect_to demographic_path
    end
  end

Т.е. переместите @demographic.update_attributes вне "Пошаговая "логика".

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...