Выборка дубликатов страниц с Rails 5.2 и Turbolinks, Webpacker и Angular 6
У меня есть страница контактов в Rails, которая запускает приложение Angular 6,
<% content_for :content_title, "Contact Us" %>
<% content_for :metatags do %>
<!-- This is to get rid of "Zone already loaded error" from a combination of Angular and Turbolinks' doing-->
<meta name="turbolinks-visit-control" content="reload">
<% end %>
<% content_for :scripts do %>
<%= javascript_pack_tag 'contact',
"data-turbolinks-track": "reload" %>
<% end %>
<%= render "pages/layout" do %>
<% content_for :title, "Contact Us" %>
<div class="divider"></div>
<div class="container" style="max-width: 800px;">
<div class="section">
<div class="card-panel">
<contact>Loading...</contact>
</div>
</div>
</div>
<% end %>
Все работает, как и ожидалось на поверхности, но я заметил следующее поведение,
- Переходя с других страниц, на которых не запускаются приложения Angular (например, домой), все работает как положено,
- Посадка напрямую на /contact (набрав localhost:3000/contact в браузере и нажав ввод) работает как положено,
Тем не мение,
Переход к / контакту с какой-либо другой страницы приводит к двум запросам к / контакту,
Переход от /contact, скажем, к корневому пути /, приводит к двум запросам к /,
Последующие запросы снова в порядке.
Я уверен, что это как-то связано с турболинками, но я не понимаю этого достаточно, чтобы точно определить, что здесь происходит.
Добавление data-turbolinks="false" решает проблему дублирующих запросов к /contact, но повторяющиеся запросы в результате перехода от / contact остаются.
<%= link_to "Contact", contact_path, data: { turbolinks: false } %>
Дополнительное наблюдение, касающееся заголовка "Принять". В обычных одиночных запросах заголовок "Принять"
"accept": text/html, application/xhtml+xml
С повторяющимися запросами первый заголовок
"accept": text/html, application/xhtml+xml
И второй заголовок,
"accept": text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Если кто-нибудь сможет просветить меня о том, что здесь происходит, я был бы очень признателен. Такое поведение наблюдается как в Chrome, так и в Safari, а также в производственной сборке на Heroku, поэтому оно не ограничивается настройкой разработки.