在Devise 1.0中,Rails 2.3的库是否有办法在登录后重定向到特定的URL而不是root_url?
编辑:忘记提及它的设计1.0
答案 0 :(得分:21)
有可能在调用after_sign_in_path
之前重定向您的用户。如果用户尝试直接转到受身份验证保护的页面,则会发生这种情况。如果您的root_path
('/')受身份验证保护,则会一直发生这种情况。
谷歌小组讨论了这个话题:
快速而肮脏的解决方案是覆盖stored_location_for
以始终返回nil
,如下所示:
class ApplicationController < ActionController::Base
...
private
def stored_location_for(resource_or_scope)
nil
end
def after_sign_in_path_for(resource_or_scope)
my_favorite_path
end
end
答案 1 :(得分:4)
我认为Devise中的after_sign_in_path_for
方法正是您所寻找的。 p>
在ApplicationController中定义该方法,它将覆盖Devise的默认实现。这是文档指定的内容。
答案 2 :(得分:0)
假设您想在登录后显示用户的信息中心。
class HomesController < ApplicationController
def index
if current_user //returns nil if not logged in
@users = User.all
render :dashboard
end
end
def dashboard
@users = User.all
end
end
在routes.rb中:
root :to => 'homes#index'
如果已登录,则在索引操作中输入if-block并渲染dashboard.erb。 (确保在if-block中初始化dashboard.erb所需的所有变量) 否则rails会渲染index.erb