Ответ 1
Вы можете попробовать это передайте идентификатор книги в сеанс вместо всего объекта книги.
например.
в странице A
book = Book.find(1)
session[:abc] = book.id
в странице B
book = Book.find(session[:abc])
Я использую хранилище сеансов для сохранения данных в сеансах. Мои инициализаторы /session _store.rb выглядят так:
::Application.config.session_store :active_record_store
Добавление данных в код сеанса:
book = Book.find(1)
session[:abc] = book
Я просматриваю данные сеанса на другой странице. Доступ к данным сеанса:
book = session[:abc]
Проблема в том, что мои данные сеанса не сохраняются между переадресациями. В чем может быть проблема?
Я вижу, что мой сеанс сохраняет данные так, как ожидалось, но потерял некоторые данные из него, когда перенаправление происходит и теряется даже больше, если снова происходит перенаправление. Разочарование это.
Вы можете попробовать это передайте идентификатор книги в сеанс вместо всего объекта книги.
например.
в странице A
book = Book.find(1)
session[:abc] = book.id
в странице B
book = Book.find(session[:abc])
Разве вы не забыли добавить таблицу сеансов?
rails g active_record:session_migration
rake db:migrate
Вы можете написать метод в модели книги.
def self.current=(book)
Thread.current[:current_book] = book
end
def self.current
Thread.current[:current_book]
end
Добавление данных в код сеанса,
book = Book.find(1)
Book.current = book
И, чтобы получить доступ к книге из сеанса, вы можете вызвать метод
Book.current