2016-12-28 2 views
1

Rails 4.2.2request.url дает мне example.com/login вместо example.com/feed

Если я щелкаю по ссылке:

<%= link_to "Feed", feed_path, data: {turbolinks: false } %> 

или вставьте URL

www.example.com/feed 

before_action в моем UsersController перенаправляет к login_url

Application Controlller 
def logged_in_user 
    unless logged_in? 
    store_location 
    flash[:danger] = "Please log in." 
    redirect_to login_url 
    end 
end 

module SessionsHelper 
def store_location 
    session[:forwarding_url] = request.url if request.get? 
end 

def redirect_or 
    redirect_to(session[:forwarding_url] || root_url) 
    session.delete(:forwarding_url) 
end 

После успешного входа в систему метод redirect_or перенаправляет меня обратно в login_url.

request.url в настоящее время сохраняется как www.example.com/login

+0

ли ваш login_url вызов store_location тоже? –

+0

Нет, это не так. –

+0

Похоже, вы используете код из RailsTutorial. Итак, ваш 'SessionController' должен выглядеть как [this?] (Https://github.com/railstutorial/sample_app_rails_4/blob/master/app/controllers/sessions_controller.rb#L10). Использует ли ваша строка 10 'redirect_or' (это' redirect_back_or') в связанном примере? Если нет, это должно стать причиной вашей проблемы. – BigRon

ответ

0

Вы не добавили store_location к login_urlafter this comment не так ли?

Если вы сделали переписку store_location с login_url после redirect_to login_url ... которые вы не хотите делать.

Если это не проблема, я бы добавил puts в store_location до и после session[:forwarding_url], потому что я не думаю, что он правильно сохраняется.

Nice work debugging this one

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