我在rails应用程序中使用Devise进行用户身份验证,因此某些路由包含在authenticate标记中,以便只允许访问登录的用户。
authenticate :user do
post '/user/orders/new', to: 'user/orders#new', as: :new_user_order
end
例如,当用户在未登录时尝试创建新订单时,会将其重定向到登录页面。
我想要的是在登录后将用户定向到新订单页面。
目前,我们正在使用request.referrer
,在尝试创建新订单之前,会将用户重定向回他们所在的页面。在发送登录之前,我似乎无法找到一种获取目标路径的方法。
有人知道我该怎么做吗?
由于
答案 0 :(得分:0)
您需要在控制器中提供用于用户身份验证的before过滤器,而不是在路由中提及它。只需将以下代码放在控制器中,如果用户未登录,它应该重定向到注册 -
before_filter :authenticate_user
答案 1 :(得分:0)
您需要覆盖Devise的Labyrinth
方法,您可以在应用程序控制器中执行此操作
after_sign_in_path_for(resource_or_scope)
希望有所帮助!
答案 2 :(得分:0)
你可以坚持最后一个网址 - 在会话[:书签]中并通过做这样的事情 -
prepend_before_filter :set_bookmark
def set_bookmark
session[:bookmark] = request.url
end
在SessionsController中,您可以使用session [:bookmark]的值(如果存在)或after_sign_in_path_for