更新rails后的上一页

时间:2014-07-12 00:43:06

标签: ruby-on-rails ruby redirect hyperlink

我正在尝试在更新链接后返回上一页。这是我的链接控制器:

def update

  if @link.update(link_params)
    redirect_to :back
  else
    format.html { render :edit }
    format.json { render json: @link.errors, status: :unprocessable_entity }
  end
end

虽然链接确实更新了,但页面只刷新,而不是返回上一页。有人可以帮助指出我做错了什么吗?谢谢!

2 个答案:

答案 0 :(得分:1)

<强>引荐

每次在应用中加载控制器操作时,您都会获得request object,其中拥有referer attribute

def update

  if @link.update(link_params)
    redirect_to request.referer 
  else
    format.html { render :edit }
    format.json { render json: @link.errors, status: :unprocessable_entity }
  end
end

答案 1 :(得分:0)

问题在于,您正在以一种想要处理响应的方式从浏览器发送请求,就像您要转到新页面一样。 redirect_to :back只是告诉rails将referrer作为重定向URL发送。如果代码为redirect_to 'http://google.com',您会希望浏览器转到google.com,不是吗?正确的做法是使用javascript进行异步调用,并在成功的情况下使用javascript返回。

如何发生这种情况取决于您使用的是哪个JavaScript库。只需拨打电话,在您的成功功能中,拨打window.history.back(),浏览器就会返回。