我正在检查几个地点,看看是否接受了服务条款。如果没有,则应将用户重定向到服务条款,然后返回到他们要去的地方。我不想通过解释为什么我没有使用'request.referer'
来使这个问题复杂化我正在做的是使用session [:return_to] =返回的路径。所以...在一个控制器中我有:
def index
if current_user.tos_at.nil?
session[:return_to] = 'answers path'
redirect_to terms_of_service_controller_index_path
end
...
end
然后,在显示服务条款并且用户点击接受后,流程将被定向到:
def accept_terms_of_service current_user.update_attributes(:tos_at => Time.now) redirect_to session [:return_to] 端
然后我得到了:
"You are being redirected."
之后在浏览器中打印出来,没有任何反应。如果我将重定向更改为:
redirect_to answers_path
重定向到正确的路径。
感谢您的帮助。
答案 0 :(得分:1)
正确分配会话[:return_to]:
session[:return_to] = answers_path
answers_path是一个帮手,所以当你将session [:return_to]分配给像'answers_path'这样的值时,它会尝试重定向到位于'answers_path'的页面。
第二种方法不是修改session [:return_to] assign,而是修改
redirect_to session[:return_to]
带
redirect_to send(session[:return_to])