当未登录的用户点击 url 时,devise 会将其转发到登录页面,然后将用户转发到其原始页面。如何在登录视图中访问此信息(原始路线/操作)?我想根据用户的去向以不同的方式显示 gui。
问问题
206 次
1 回答
0
因此,您应该扩展/覆盖设计的会话控制器。为此,请从此处new
复制最新的操作代码,并将其粘贴到从设计的会话控制器继承的控制器(我们称之为会话)中,如下所示:
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
在您的视图中访问!
于 2012-04-09T22:09:02.127 回答