在登录期间获取原始URL

时间:2012-04-09 20:39:59

标签: ruby-on-rails devise

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

1 个答案:

答案 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了!