首页 > 解决方案 > 确定您的操作是直接请求还是重定向到?

问题描述

说我在:

example.com/foo

我单击一个转到 的按钮root_path,通常它是:

example.com/

在接收请求的控制器操作中,确定用户应该被重定向到:

example.com/bar

在接收该请求的控制器操作中,我现在想知道用户是否已通过 重定向root_path,因此我检查了request.referer. 但我发现引用者不是example.com/,而是example.com/foo

我检查了该request对象,但似乎没有重定向请求的路径的痕迹。这是正确的,还是有一个说法?

这是日志:

Started GET "/" for 127.0.0.1 at 2019-05-29 09:40:37 +0200
Processing by HomeController#index as HTML
  Parameters: {}
Redirected to https://example.com/bar
Completed 302 Found in 21ms

Started GET "/bar" for 127.0.0.1 at 2019-05-29 09:40:37 +0200
Processing by BarController#index as HTML
  Parameters: {}
Completed 200 OK in 285ms (Views: 274.1ms)

我意识到我可以在重定向时添加一个参数,但在此之前我想确保信息不在会话中。

标签: ruby-on-railsredirectruby-on-rails-5url-redirectionhttp-referer

解决方案


例如,您可以使用flash设置一些自定义属性,例如:redirected_from

redirect_to '/foo', flash: { redirected_from: request.path }

您可以稍后在example.com/bar控制器操作中阅读


推荐阅读