首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ruby On Rails中重定向到上一页?

如何在Ruby On Rails中重定向到上一页?
EN

Stack Overflow用户
提问于 2010-01-26 22:30:46
回答 9查看 167.4K关注 0票数 194

我有一个页面,其中列出了所有的项目,有排序的标题和分页。

代码语言:javascript
复制
path:
/projects?order=asc&page=3&sort=code

我选择编辑其中一个项目

代码语言:javascript
复制
path:
projects/436/edit

当我单击该页面上的保存时,它将调用项目控制器/更新方法。更新代码后,我希望重定向到单击edit a specific project之前所在的路径。换句话说,我希望在同一个页面上进行相同的排序。

我看到了link_to( :back ),并认为:back可以在redirect_to(:back)中工作,但这是行不通的。

代码语言:javascript
复制
puts YAML::dump(:back) 
yields the following:
:back 

有什么建议吗?我怎么才能让它起作用。这似乎是一个很容易解决的问题,但我是RoR的新手。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-01-26 22:41:33

在您的编辑操作中,将请求url存储在会话散列中,该散列可用于多个请求:

代码语言:javascript
复制
session[:return_to] ||= request.referer

然后在成功保存后,在更新操作中重定向到它:

代码语言:javascript
复制
redirect_to session.delete(:return_to)
票数 334
EN

Stack Overflow用户

发布于 2011-02-13 20:51:20

为什么redirect_to(:back)对你不起作用,为什么它是不可行的?

redirect_to(:back)对我来说就像是一种魅力。这只是redirect_to(request.env['HTTP_REFERER'])的一条捷径

http://apidock.com/rails/ActionController/Base/redirect_to (Rails 3之前的版本)或http://apidock.com/rails/ActionController/Redirecting/redirect_to ( Rails 3)

请注意,redirect_to(:back)在Rails 5中已被弃用。

改为redirect_back(fallback_location: 'something') (参见http://blog.bigbinary.com/2016/02/29/rails-5-improves-redirect_to_back-with-redirect-back.html)

票数 106
EN

Stack Overflow用户

发布于 2010-10-22 00:01:16

我喜欢Jaime的方法,但有一个例外,每次重新存储referer对我来说效果更好:

代码语言:javascript
复制
def edit
    session[:return_to] = request.referer
...

原因是,如果您编辑多个对象,您将始终被重定向回使用Jaime的方法存储在会话中的第一个URL。例如,假设我有Apple和Orange对象。我编辑苹果,session[:return_to]被设置为该操作的引用者。当我使用相同的代码编辑Orange时,session[:return_to]不会被设置,因为它已经被定义了。因此,当我更新Orange时,我将被发送到前一个Apple#edit操作的referer。

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2139996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档