我正在尝试在更新链接后返回上一页。这是我的链接控制器:
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
虽然链接确实更新了,但页面只刷新,而不是返回上一页。有人可以帮助指出我做错了什么吗?谢谢!
答案 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()
,浏览器就会返回。