экземпляр var не был сохранен в методе - PullRequest
0 голосов
/ 22 октября 2011

Вот код в контроллере клиента:

  def edit
    @customer = Customer.find(params[:id])
    @return_to = params[:return_to]     
  end

  def update
    @customer = Customer.find(params[:id])

    if @customer.update_attributes(params[:customer], :as => :roles_new_update)

    redirect_to @return_to, :notice => 'Customer was updated successfaully!'
    else
      render 'edit', :notice => 'Customer was not updated!'
    end
  end

Проверено, что есть значение в @return_to при редактировании метода. Однако есть ошибка, которая говорит: невозможно перенаправить на ноль! для

   redirect_to @return_to, :notice => 'Customer was updated successfaully!'

в методе обновления.

Есть мысли об ошибке? Спасибо.

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Это потому, что когда вы находитесь в действии редактирования, это один запрос на показ формы.Затем, когда вы отправляете форму, это второй запрос, вызывающий действие обновления.Любые состояния, заданные в действии, ограничиваются только этим действием.Существует несколько способов использования данных в нескольких действиях:

  1. База данных (сохраните ее в модели)
  2. Хэш сеанса
  3. Передайте его в видечтобы перейти к вашей форме.

Поскольку это перенаправление / возврат к значению, я бы предложил использовать переменную сеанса, такую ​​как:

session[:return_to] = params[:return_to]

В вашем действии редактирования, затем простообратитесь к этому значению в вашем обновлении:

session[:return_to]
0 голосов
/ 22 октября 2011

я не понимаю; edit не вызывает update, поэтому не было бы внутренней причины для @return_to по-прежнему существовать.

Знаете ли вы, что контроллеры создаются по запросу?

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