当未登录的用户点击网址时,设计会将其转发到登录页面,之后它会将用户转发到其原始网页。如何在登录视图中访问此信息(原始路由/操作)?我想根据用户的去向以不同的方式显示gui。
答案 0 :(得分:0)
因此,您应该扩展/覆盖设计的会话控制器。要执行此操作,请从here复制最新的new
操作代码,并将其粘贴到从devise的会话控制器继承的控制器(让我们称之为会话)中,如下所示:
class SessionsController < Devise::SessionsController
def new
self.resource = build_resource(nil, :unsafe => true)
clean_up_passwords(resource)
@after_sign_in_url = after_sign_in_path_for(resource)
respond_with(resource, serialize_options(resource))
end
end
由于此控制器继承自Devise,因此当您的控制器中未定义操作时,Devise的控制器将处理该操作。因此,您只需覆盖new
操作。
最后,编辑您的路线文件,以使此更改生效:
# routes.rb
devise_for :users, :controllers => { :sessions => 'sessions' }
或者,如果您使用范围,请执行以下操作:
# routes.rb
devise_scope :user do
get 'login' => 'sessions#new', :as => :new_user_session
end
您现在可以在视图中访问@after_sign_in_url
了!