未经身份验证时,turbolinks 不会更改重定向 url

turbolinks doesn't change redirect url when unauthenticated

当 turbolink 关闭时,例如:

//= require jquery
//= require jquery_ujs
//= require_tree .

未经身份验证的用户试图访问 url,例如受 authenticate_user 保护的 /themes/new!设计 gem。 然后他通常会被重定向到 /sign_in.

但是当打开 turbolinks 时,例如:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

如果用户尝试访问 /themes/new,他会看到与 /sign_in 相同的屏幕。但是 url 是 /themes/new.

为什么会发生这种变化?

我阅读代码以使用 pry-byebug 解决问题。但这对我来说太复杂了。

Rails 4.2.0 设计 3.4.1

这是一个known issue,并且在某种程度上限制了目标。

您可以 adjust the url manually,但在这种情况下,可能需要大量覆盖 gem 方法才能使用适当的选项。它还将强制执行 "real" 重定向,这会更慢。

我认为更好的解决方案是重新设想您的登录 UI 根本不需要重定向到单独的页面。也许它可以在模态 window 中打开对话框,成为主导航的一部分,从程式化容器中的主导航下拉,等等。这会给你一点额外的视觉效果,同时完全避免这个问题.