2011-07-22 40 views
6

的Rails 2.3.11重定向到

如果用户试图去时,他们还没有登录/照片登录后原来的目的地,他们将进入[site]/admin/login?route=[site]/photos。登录后,我希望将它们发送到“路由”中定义的任何内容,而不是默认主页。

在/app/controllers/admin_controller.rb:

def login 
    if session[:user_id] #already logged in 
     redirect_to '' 
    @destination = request.url 
    end 
    if request.post? 
     if [authentication code] 
     if user.activated? #check to see whether the user has activated their account 
      session[:user_id] = user.id 
      if params[:route] # ******** 
      redirect_to "#{params[:route]}" 
      else 
      redirect_to :controller => 'home' 
      end 
     else 
      flash.now[:notice] = "Your account hasn't been activated yet. Check your emails!" 
     end 
     else 
     flash.now[:notice] = "Invalid email/password combination" 
     end 
    end 
    end 

的 “*” ed行是无法正常工作的一个。当我查看参数时,:路由不在其中,因此参数没有被传入登录帖子。任何人都可以向我解释为什么它不是,我该如何解决它?

谢谢!

回答

3

你可以这样做:

session[:return_to] ||= request.referer 
+1

看一看http://stackoverflow.com/questions/2139996/ruby-on-rails-redirect-toback – Swift

+0

这看起来像它应该做的伎俩,但是我对Rails仍然很陌​​生,所以你可以对我应该放在哪里做一些小小的阐述。它会在我的应用程序控制器中(它将未登录到访客页面的访问者重定向到哪里)还是在上面公布的方法中的某处?谢谢! – Benjin

+1

谢谢;这工作(一旦我明白了)! 对于所有的人,我最后不得不做的是这样的: 有引导到授权方法的before_filter: 'DEF授权 除非LOGGED_IN? 会话[:original_target] = request.request_uri 闪光灯[:声明] = “您必须先登录才能查看该页面” redirect_to的HOME_URL 结束 end' 然后,在我的登录控制器,认证用户之后,检查是否存在会话[:original_target]中存储的任何内容,如果存在,请转到该内容。 – Benjin