Lightbox не работает с Turbolinks, если страница не обновлена - PullRequest
0 голосов
/ 06 января 2020

У меня есть приложение Rails 5.2.2, использующее Turbolinks и Lightbox 2. Недавно я изменил jquery-ujs на rails-ujs, чтобы исправить проблему, когда подтверждающие окна сообщения отображались несколько раз. Теперь лайтбокс работает только после обновления страницы sh. Я знаю, что это проблема с Turbolinks и Lightbox, но я не могу понять, как это исправить.

app / views / layouts / application. html .erb

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    <%= favicon_link_tag 'favicon.ico' %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>
    <%= yield :head %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  </head>
  <body>
    <%= render 'layouts/header' %>
    ...
  </body>
</html>

app / views / laser_sheets / _laser_sheet. html .erb

...
      <%= link_to laser_sheet.nest.url, data: { lightbox: 'nests', title: laser_sheet.name } do %>
        <i class="fa fa-fw fa-picture-o"></i>
      <% end %>
...

Gemfile

...
gem 'turbolinks',               '~> 5.2.0'
gem 'lightbox2-rails',          '~> 2.8.2'
...

Я попытался добавить следующее в конец application.js, но это не имело значения:

app / assets / javascripts / application. js

//= require jquery
//= require rails-ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require raphael
//= require morris
//= require lightbox
//= require_tree .

$(document).on('turbolinks:load', function(event) {
  lightbox.init();
});
...