2016-04-13 5 views
0

Когда пользователь посещает index Im, перенаправляя его на show. Как вы можете видеть в index я устанавливаю переменный в созданииСессия теряется после перенаправления

skip_before_filter :verify_authenticity_token, only: :show 


    def show 
    debugger 
    render inline: "<h3>hello</h3>" 
    end 


    def index 
    session[:user] = "hans" 
    debugger 
    redirect_to action: "show" 
    end 

Когда я использую отладчик в действии show:

session 
    => #<ActionDispatch::Request::Session:0x7f9a8e0882e0 not yet loaded> 

Тогда, когда я заставляю инициализацию сессии:

session[:init] = true 

Затем есть сессия, но session[:user] == nil и session_id также отличается от session_id I войдите в index.

Что я не так? Зачем возникает новый сеанс после перенаправления?

Благодаря

+0

Это странно, я не наблюдаю такое поведение. Мои данные 'session' правильно доступны в целевом действии. Возможно, у вас также есть какой-то пользовательский маршрут для действия 'show', поскольку вам не нужно передавать' id'? – BoraMa

ответ

0

Я подозреваю, что отладчик ваша проблема в том, что вы прерывая процесс получения переменной сеанса. Если бы я сделать следующее:

class PostsController < ApplicationController 
    def index 
    session[:user] = "hans" 
    redirect_to action: "show" 
    end 

    def show 
    render inline: "USER:" + session[:user] 
    end 
end 

Я ввожу URL: /сообщений/индекс

И мой вывод: "Пользователь: Hans"