Разве экземпляр ActionDispatch не может быть сохранен в переменной класса? - PullRequest
1 голос
/ 01 февраля 2012

У меня есть контроллер, который имеет два метода: выгрузка и отправка

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

в загрузке, у меня есть такой код:

def upload
    @file = params[:avatar]
    ...
end

в отправке, у меня есть такой код:

def submit
    ...
    user.avatar = @file
    ...
end

но похоже, что @file равен nil.

Где я ошибаюсь? ....

Я использую Rails 3.2.0

1 Ответ

0 голосов
/ 01 февраля 2012

Переменные экземпляра в контроллерах не сохраняются между запросами. Каждый запрос создает новый экземпляр класса контроллера, поэтому @file, который вы сохраняете в upload, исчезает, когда upload заканчивается. Затем, когда приходит новый запрос, направляемый вашему методу submit, Rails создаст новый экземпляр вашего класса контроллера и вызовет для него submit. Поскольку у вас есть два экземпляра класса, у вас есть два набора переменных экземпляра, и они не будут разделять ваш @file.

Вы должны организовать хранение @file в вашей базе данных, сеансе, форме и т. Д. Между запросами, а затем ваш submit должен загрузить его из любого места и присвоить user.avatar .

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