登录原始任务后重定向

时间:2011-03-19 00:39:31

标签: ruby-on-rails redirect devise

所以我想向用户发送电子邮件,其中包含一些链接,您可以点击这些链接来执行操作,但如果用户尚未登录,我希望能够让用户登录然后重定向他回到了他想去的地方。

我在application_controller.rb中有这些方法

这被称为URL链接到的地方的before_filter,捕获用户不应该在他试图去的地方并存储意图

    def user_in_beta
    unless user_signed_in? && current_user.beta
      if user_signed_in?
        redirect_to :home_betawait
      else 
        session[:original_uri] = request.request_uri
        redirect_to new_user_session_path
      end
    end
  end

在他登录并把他带回他所属的地方后,这应该抓住他。

def after_sign_in_path_for(resource_or_scope)
    if current_user.beta
      if session[:original_uri].nil?
        :home_index
      else
        session[:original_uri]
      end
    else :home_betawait
    end
  end

然而,它没有。相反,我得到一个非常讨厌的“无法重定向到零!”如果我将它读入一个局部变量并存储它,那么更多的事情就会破裂。我感到非常困惑,这是一件非常普遍的事情。

1 个答案:

答案 0 :(得分:4)

  

我希望能够让用户   登录然后将其重定向回   他想要达到的目的。

此行为已由Devise的authenticate_user! before_filter提供。既然你对这个故事的“设计”标签和user_signed_in?的使用表明你已经在使用Devise为什么要重新发明你自己的解决方案?

相关问题