#ruby-on-rails #lightbox2
#ruby-на-рельсах #lightbox2 #ruby-on-rails
Вопрос:
Я попытался добавить lightbox2 в свой проект rails, но это вообще не работает.
Я следил за readme на github
В моем application.css я добавил это:
*= require lightbox
В моем custom.css.scss я добавил это:
@import 'lightbox';
В установленном jquery и в моем javascript/packs/application.js я добавил это:
require('jquery')
require("lightbox")
В моем представлении шоу я добавил это:
<table>
<% @images.each do |image| %>
<tr><td>
<%= link_to image.img_url, data: { lightbox: @gallery.id } do %>
<%= image_tag image.img_url %>
<% end %>
</tr><td>
<% end %>
</table>
это мой файл application.html.erb:
<html>
<head>
<title>PictureGallery</title>
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
<body>
<%= yield %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
</body>
</html>
Я поместил это в свои инициализаторы / assets.rb:
# Lightbox:
Rails.application.config.assets.precompile = %w( lightbox/* )
Само представление работает, и URL-адреса изображений работают правильно. Но если я нажимаю на изображение, изображение открывается со своим собственным URL-адресом изображения, который сообщает мне, что лайтбокс вообще не работает. Похоже, js не загружается.
Что не так и как мне это исправить?
Ответ №1:
Каким-то образом я это исправил, и это работает. Я скопировал содержимое lightbox.js файл из репозитория github в отдельный файл в javascript/packs/lightbox.js
После этого я добавил reguire("packs/lightbox")
в свой application.js и, наконец, я вызвал скрипт lightbox в моем application.html.erb вот так:
<body>
<%= yield %>
<%= javascript_pack_tag 'lightbox' %>
</body>
Есть ли вообще проблема в rails 6 с импортом js, который был где-то установлен gems?
Ответ №2:
config /initializers /assets.rb больше не является частью вашего приложения, потому что вы используете webpacker (javascript_pack_tag)