0

当未登录的用户点击 url 时,devise 会将其转发到登录页面,然后将用户转发到其原始页面。如何在登录视图中访问此信息(原始路线/操作)?我想根据用户的去向以不同的方式显示 gui。

4

1 回答 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 回答