Hom*_*man 19 redirect login ruby-on-rails devise
我有一个ajax投票按钮:如果用户点击"竖起大拇指"图像,但没有登录,那么他们应该会看到一个对话框,要求他们先登录.
要执行此对话框,我使用jQuery和facebox绑定到ajax:failure事件.如果用户未登录,Devise将引发401 Unauthorized .facebox在弹出对话框中加载远程html以进行登录,该对话框显示DEVISE登录表单.
一切正常,除了成功登录后,用户被重定向到主页.如果用户被重定向回他们正在查看的帖子,那么他们可以继续投票,这将更加直观.
是否有实现此行为的最佳实践方法?
谢谢.
cor*_*ard 19
我在Rails 3上使用Authlogic执行以下操作,也许您可以使用它或执行类似的操作:
class ApplicationController < ActionController::Base
after_filter :store_location
private
def store_location
session[:return_to] = request.fullpath
end
def clear_stored_location
session[:return_to] = nil
end
def redirect_back_or_to(alternate)
redirect_to(session[:return_to] || alternate)
clear_stored_location
end
end
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用redirect_back_or_to dashboard_path登录操作中的内容.
对于某些控制器/操作,我不想存储位置(例如登录页面).对于那些我只是跳过过滤器:
class UserController < ApplicationController
skip_after_filter :store_location
end
Run Code Online (Sandbox Code Playgroud)
在Devise wiki中还有一个关于这样做的页面:https://github.com/plataformatec/devise/wiki/How-To :-Redirect-to-a-specific-page-on-successful-sign-in
ede*_*son -1
使用cookie。获取他们尝试访问的 window.location.href 并将其存储为 cookie。在您的主页上,检查文档就绪功能中是否存在此 cookie,如果存在则重定向
| 归档时间: |
|
| 查看次数: |
10820 次 |
| 最近记录: |