request.url给了我example.com/login而不是example.com/feed

时间:2016-12-28 18:45:12

标签: ruby-on-rails

Rails 4.2.2

如果我点击链接:

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

或粘贴网址

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

1 个答案:

答案 0 :(得分:0)

您没有将store_location添加到login_url after this comment吗?

如果您这样做,则在store_location之后使用login_url覆盖redirect_to login_url,而您不想这样做。

如果不是问题,我会在puts store_location之前和之后session[:forwarding_url]添加{{1}},因为我认为它没有得到妥善保存。

<强> Nice work debugging this one