应用程序有很多测试,问题是只有经过身份验证的用户才能查看它们。因此,当没有时,应用程序会将它们重定向到 sing_in/login_as_guest 页面。例如,用户以访客身份唱歌或登录,之后我想将他们重定向到他们实际要去的页面。但我不知道从哪里开始,这可能吗?你能给我一个从哪里开始的钥匙吗?
问问题
133 次
3 回答
0
于 2013-04-25T22:46:27.957 回答
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
现在,当您想从某个地方重定向回来时,只需将引用路径添加到参数、会话或请求,它就会在成功时重定向回来。
于 2013-04-25T22:49:29.733 回答
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
而不是在开始会话之后,我只是通过调用这个方法来重定向。
于 2013-04-26T22:35:07.120 回答