在Rails重定向

时间:2016-02-17 01:56:12

标签: javascript ruby-on-rails ruby

我试图找出如何实现这一目标。我想要做的是有一个javascript函数,显示一个'加载屏幕'给用户。我只想在重定向之前为一个控制器发生这种情况。那个控制器是这样的:

Foo控制器

def index
  redirect_to some_path
end

我只是通过向整个应用程序添加javascript来实现它,但我不确定如何仅为一个控制器显示它。通常我会检查参数,但似乎重定向在javascript之前点击,所以我无法检查它。

对此有何见解?

1 个答案:

答案 0 :(得分:0)

Rails重定向实际上是普通HTTP协议的一部分 - 浏览器不会加载任何数据。这就是为什么在重定向之前无法执行您要求的内容,而您最好的方法是将javascript内容加载到目标页面。

HTTP重定向就像这样(我简化了):

浏览器:

GET /some/path HTTP/1.1

=='我可以拥有此网页吗?'

服务器:

HTTP/1.1 302 Redirect
Location: http://my.server.com/some/other/path

=='它在那边 - 再次询问'。

浏览器:

GET /some/other/path HTTP/1.1

服务器:

HTTP/1.1 200 OK

data

如您所见,数据仅在重定向后发送。

建议的解决方案@ thedarklord47可能是您唯一的选择 - 创建一个"着陆页"这将使用Javascript加载所有资源(类似于SPA - 单页面应用程序 - 可能使用AJAX)而不是像常规网页那样加载资源。

网上有一些关于"感知表现的好文章"这可以为您提供更多的想法和信息。

祝你好运!