redirect_to存储在变量中的路径未完成

时间:2011-08-08 19:16:28

标签: ruby-on-rails-3

我正在检查几个地点,看看是否接受了服务条款。如果没有,则应将用户重定向到服务条款,然后返回到他们要去的地方。我不想通过解释为什么我没有使用'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

重定向到正确的路径。

感谢您的帮助。

1 个答案:

答案 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])