重定向前跟踪请求

时间:2013-04-25 22:38:41

标签: ruby-on-rails

应用程序有很多测试,问题是只有经过身份验证的用户才能查看它们。所以当没有时,app会将它们重定向到sing_in / login_as_guest页面。例如,用户在进行访问或以访客身份登录,之后我想将它们重定向到他们实际要访问的页面。 但我不知道从哪里开始,这可能吗? 能不能给我一把钥匙从哪里开始?r

3 个答案:

答案 0 :(得分:0)

第5章的结尾和第6,7,8,9章是您需要的一步一步指导 rails tutorial

答案 1 :(得分:0)

以下是一个例子:

class UserController < ApplicationController
  def login
    if User.authenticate(params[:user][:email], params[:user][:password])
      referer = params[:referer] || session[:referer] || request.referer
      flash.notice = 'Login succeeded'
      redirect_to referer || root_path
    else
      flash.alert = 'Login failed'
      redirect_to user_login_path
    end        
  end
end

现在,当您想从某个地方重定向时,只需将参考路径添加到参数,会话或请求中,它将在成功时重定向。

答案 2 :(得分:0)

好的,我找到了简单的解决方案,对我来说效果很好。应用程序控制器:

    if @current_permission.allow?(params[:controller], params[:action])
        return true
      else
      redirect_to root_url
      session[:was_going]=request.path #here I start session if request causes redirection
      end
  end

此方法返回该请求(如果存在)

 def root_or_request
    if session[:was_going]
    path=session[:was_going]
    session[:was_going] = nil
    return path
    else
    return root_url
    end

  end

并且在开始会话之后我只需重定向并调用此方法。