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行是无法正常工作的一个。当我查看参数时,:路由不在其中,因此参数没有被传入登录帖子。任何人都可以向我解释为什么它不是,我该如何解决它?
谢谢!
看一看http://stackoverflow.com/questions/2139996/ruby-on-rails-redirect-toback – Swift
这看起来像它应该做的伎俩,但是我对Rails仍然很陌生,所以你可以对我应该放在哪里做一些小小的阐述。它会在我的应用程序控制器中(它将未登录到访客页面的访问者重定向到哪里)还是在上面公布的方法中的某处?谢谢! – Benjin
谢谢;这工作(一旦我明白了)! 对于所有的人,我最后不得不做的是这样的: 有引导到授权方法的before_filter: 'DEF授权 除非LOGGED_IN? 会话[:original_target] = request.request_uri 闪光灯[:声明] = “您必须先登录才能查看该页面” redirect_to的HOME_URL 结束 end' 然后,在我的登录控制器,认证用户之后,检查是否存在会话[:original_target]中存储的任何内容,如果存在,请转到该内容。 – Benjin