Ruby on Rails 5 — Turbolink 3 работал некорректно

Я использую Ruby on Rails 5 и использую турбо-ссылку, как показано ниже:

<%= javascript_include_tag 'custom-plugins', 'data-turbolinks-track' => true %>

Он отлично работает с Ruby On Rails 4, но есть проблема с Ruby on Rails версии 5. Как только я нажимаю «Назад», js/css загружается неправильно.

Любая помощь будет оценена.


person Dinesh Saini    schedule 21.08.2015    source источник
comment
что именно не загружается ты хочешь сказать?   -  person Gaurav Mamidwar    schedule 21.08.2015
comment
Я открываю свой сайт www.example.com -> все в порядке. Я открываю другую страницу -> www.example.com/xyz, затем нажимаю кнопку «Назад», теперь страница отображается неправильно.   -  person Dinesh Saini    schedule 21.08.2015
comment
Вы хотите сказать, что рендеринг страницы не работает? или функции JS не загружаются?   -  person Gaurav Mamidwar    schedule 21.08.2015
comment
Означает JS и CSS (бутстрап не работает)   -  person Dinesh Saini    schedule 21.08.2015
comment
Вы пытались выполнить какие-либо основные шаги отладки? Откройте веб-консоль в своем браузере и проверьте наличие ошибок - если это не сразу скажет вам, что не так, добавьте конкретное сообщение об ошибке в свой вопрос. Для тех, кто называет себя разработчиком, вы, возможно, должны знать, что абсолютно любой может сделать приседание, но угадать с таким расплывчатым описанием ошибки.   -  person max    schedule 26.08.2015
comment
Я хотел бы подтвердить - есть ли какие-либо известные проблемы с этим. Во-вторых, он не показывает никаких ошибок даже в консоли, и я также попробовал несколько быстрых операций.   -  person Dinesh Saini    schedule 27.08.2015


Ответы (2)


Как указано в Потрясающие возможности Rails 5

Turbolinks был частью Rails с версии 4, возможно, это одна из функций, которые люди ненавидят или любят; здесь нет золотой середины.

С Rails 5 мы получим новую версию, в которой с помощью пользовательских атрибутов данных HTML5 мы ожидаем более высокой скорости и рендеринга в наших приложениях Rails.

Наиболее значительным изменением в этой новой версии является функция частичной замены. Со стороны клиента мы сможем сообщить Turbolinks, какой контент нам нужно изменить/заменить, а какой нет.

Turbolinks будет искать пользовательские атрибуты HTML5 и определять стратегию замены в нашем файле .

Чтобы вызвать замену на стороне клиента, мы могли бы использовать или обновить наш файл . Разница между и заключается в том, что первый выдает серверу запрос на получение HTML-кода, который необходимо использовать для замены нашего, а ожидает от нас HTML-код, который следует использовать для его работы.

С помощью обеих функций мы можем передать хэш с или массивом HTML-элементов в или.

Action  Result
Turbolinks.visit(url, { change: ['entries'] })  Will replace any element with custom attribute and any element with its id listed in change.
Turbolinks.visit(url)   Will keep only elements with custom attribute and replace everything.
Turbolinks.visit(url, { keep: ['flash'] })  Will keep only elements with custom attribute and any element with its id listed in keep, everything else will be replaced.
Turbolinks.visit(url, { flush: true })  Will replace everything

Мы можем активировать ту же функциональность со стороны сервера с помощью и , оба могут получать , и в качестве параметров, но также можем получать или принудительно перенаправлять с турбоссылками или без них.

Нравится вам Turbolinks или нет, сейчас самое время попробовать и выяснить, подойдет ли он для вашего приложения.

person Sumit Munot    schedule 20.11.2015

Это обычное явление для турболинков с js. Turbolinks помогает загружать определенную страницу намного быстрее. Но то, что он также делает, иногда останавливает работу js. Поэтому при загрузке этой конкретной страницы используйте эту строку

<%= link_to "example_page", example_page_path, :"data-no-turbolink" => true %> 

или напишите это в своем макете

<body <%= "data-no-turbolinks='true'".html_safe if controller_name=="example_controller" && action_name=="example_page" %>>

чтобы остановить работу turbolink на этой конкретной странице.

person Pinasis    schedule 16.09.2015