Rails 5 + Turbolinks + Jquery .ajax () фактически отображают .js.erb - PullRequest
0 голосов
/ 15 апреля 2019

Я обновляю приложение с Rails 4.2 до Rails 5.2.

В этом приложении есть ситуация:

  1. jQuery $.ajax() отправляет запросы # создать с type: 'POST', dataType: 'script'.
  2. Контроллер перенаправляет на другое действие, поддерживая format: :js.
  3. Второе действие принимает вызов как JS и отображает файл .js.erb.
  4. InВ Rails 4 этот .js.erb будет работать так, как он должен.
  5. В Rails 5 моя веб-страница исчезает, и файл .js.erb отображается в браузере как есть.

Мои исследования ( пример ) привели меня к мысли, что это связано с Turbolinks, который любит заменять страницу тем, что получает от сервера.

Обновление: удаление турболинков исправляетпроблема.Я хотел бы иметь возможность исправить это, не отключая турболинки.

Как заставить .js.erb работать правильно, а не просто визуализировать?

Environment

ruby 2.6.3
rails 5.2.3
jquery-rails 4.3.3
turbolinks 5.2.0

Code

В целом много кода.Вот части, которые кажутся мне наиболее подходящими: вызов AJAX серверу и ответ сервера.

# jQuery:
$.ajax({
  type: "POST",
  dataType: "script",
  url: "/requests?c=" + c_id,
  success: function(data){
    ...
  }
})

# second controller action
...
respond_to do |format|
  format.js
end

Вопросы, относящиеся *

Можно ли отключитьTurbolinks для определенных вызовов jQuery Ajax для предотвращения обновления и прокрутки страницы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...