Rails 记录编辑完成后如何跳转到之前的 index 页?

jonnoj · 2018年06月02日 · 最后由 yangdong77 回复于 2018年06月04日 · 1609 次阅读

比如我要编辑 User 的资料,当前页面是 /users?page=10

我编辑当前页的一个用户,跳转到 /users/10/edit

编辑完成后,怎么跳转回 /users?page=10

rails 有没有最佳实践的方法?

我目前想到的是在每个编辑表单里加 hidden_field_tag,但这样感觉过于麻烦,想问问有没有更方便优雅的方法。

没找到什么好办法,目前是通过 session 保存 referrer 来实现。

# application_controller
before_action do
  session[:return_to] = request.referrer
end

# action
def update
  #...
  redirect_to (session[:return_to] || other_path) 
end

大致思路这样,实际使用还要其他额外处理

gihnius 回复

比我的办法好,谢谢回复,跳转前,取出 session 中的地址,然后清空 session 的地址

感觉 hidden_field_tag 没什么问题,没有必要使用 session 和 cookie

  1. 编辑页面跳转到:/users/10/edit?redirect_url=/users?page=10
  2. 编辑页面里面把 redirect_url 用 hidden 存起来然后 post
  3. post 的数据里面去除 redirect_url 然后跳转

用 hidden field 麻烦的话可以使用 cookie,不是什么敏感数据,没有必要使用 session

可以参考这个文章 When should I use cookies and when should I use sessions https://www.quora.com/When-should-I-use-cookies-and-when-should-I-use-sessions

如果用户资料数据不多,页面不大,编辑不跳转页面,通过弹窗异步实现感觉操作更方便点。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号