2015-04-09 4 views
10

Я использую хранилище сеансов для сохранения данных в сеансах. Мой Инициализаторы/session_store.rb выглядит следующим образом:Сеанс Rails не сохраняется после перенаправления

::Application.config.session_store :active_record_store 

Добавление данных в код сеанса:

book = Book.find(1) 
session[:abc] = book 

я доступ к этой сессии данные на другой странице. Доступ к данным сеанса:

book = session[:abc] 

Проблема в том, что мои данные сеанса не сохраняются между переадресацией. В чем может быть проблема?

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

+0

Вы должны добавить некоторую информацию о том, как вы пишете в, и чтение из сеанса. То есть код, который не дает ожидаемых результатов. –

+0

@MaxWilliams, я думал, это будет понятно. Во всяком случае, я отредактировал мой вопрос. Что теперь? –

+0

, пожалуйста, разместите свой код контроллера –

ответ

6

Вы можете попробовать этот пасс книгу идентификатор сессии вместо всего объекта книги.

например.

в странице

book = Book.find(1) 
session[:abc] = book.id 

в странице B

book = Book.find(session[:abc]) 
4

Разве вы не забыли добавить таблицу сеансов?

rails g active_record:session_migration 
rake db:migrate 
+0

У меня есть таблица сеансов в базе данных mySql. –

+0

Странно, этого должно быть достаточно, чтобы он работал ... Я попробую его позже. –

+0

И страница, которую вы перенаправляете, находится в том же субдомене? –

4

Вы можете написать метод в модели Book.

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 
+1

вы можете объяснить, почему вы использовали поток для настройки и доступа к значениям? – kamal

Смежные вопросы