Постоянные переменные в Rails 3 - PullRequest
0 голосов
/ 27 ноября 2010
def edit
    @title ="Edit account"
    @page_name = "edit"    
  end

  def update
    if @wsp.update_attributes(params[:wsp])
      # it worked
      flash[:success] = "Profile updated."
      if (@title == "Location")
        redirect_to wsp_location_path
      else
        redirect_to edit_wsp_path
      end
    else 
      @title = "Edit account"
      render 'edit'
    end
  end

Переменная @title пуста в методе обновления.Как я могу сделать @title постоянным, чтобы я мог его прочитать?

Ответы [ 3 ]

3 голосов
/ 27 ноября 2010

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

Возможно, вам нужно использовать session, или еще лучше flash, чтобы сохранить заголовок в запросах.

def edit
  flash[:title] = @title = "Edit account"
  ...
end

def update
  ...
  if (flash[:title] == "Location")
    redirect_to wsp_location_path
  else
    redirect_to edit_wsp_path
  end
end
0 голосов
/ 27 ноября 2010

Если вся цель этого состоит в том, чтобы отобразить его на странице редактирования, почему бы не поместить его туда (app/views/the_controller/edit.html.erb)? Таким образом, он будет отображаться во всех запросах к этой странице, и вы не помещаете код представления / представления в контроллер, где он не принадлежит.

0 голосов
/ 27 ноября 2010

В действии edit вы должны записать результат в поле формы, возможно, в скрытое поле.Затем прочитайте эти данные обратно из отправленной формы в вашем действии update.Вы действительно не должны сохранять какую-либо сторону сервера состояний между этими двумя запросами.

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

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