#jquery #ruby-on-rails #jquery-plugins #ruby-on-rails-3.1 #asset-pipeline
#jquery #ruby-on-rails #jquery-плагины #ruby-on-rails-3.1 #конвейер ресурсов
Вопрос:
Я использую плагин jQuery под названием Fancy Gallery, который часто вызывает изображения из папки images в папке плагина, например background:url("../images/fancygallery/arrows_sprite.png")
. Мой вопрос состоит из 2 частей
-
Как этот плагин должен интегрироваться с моим приложением rails 3.1? Должна ли папка быть размещена внутри папки vendors / assets? Плагин имеет 3 папки, css, изображения, js. Если я помещу их в
vendor/assets/stylesheets
,vendor/assets/images
,vendor/assets/javascripts
, css, безусловно, не сможет найти изображения в../images
папке, поскольку она больше не будет существовать после завершения конвейерной обработки ресурсов. Итак, где это должно быть размещено? -
Есть ли простой способ, с помощью которого мне не нужно заходить в мой плагин и редактировать css везде, где он загружает изображения? Я не хочу делать это каждый раз, когда я обновляю плагин, должен быть способ, которым я могу просто удалить папку плагина как есть и заставить ее работать.
После дальнейшего тестирования
Это проблема, с которой я сталкиваюсь. например, в CSS вот часть, которая загружает стрелку background: url('../images/fancygallery/arrows_sprite.png')
. Во всем плагине все изображения обозначаются ../images
подобным образом. Итак, при загрузке плагина при загрузке страницы, вот как он ищет изображение, http://localhost:3000/images/fancygallery/arrows_sprite.png
но изображение там не существует, оно существует в assets/fancygallery/images
папке. Есть ли какой-либо способ, которым я могу сделать ../images
просмотр http://localhost:3000/assets/fancygallery/images/
, а не http://localhost:3000/images/
? Или какой-либо другой обходной путь для этого, который не требует от меня изменения кода плагина, чтобы я мог легко обновить его позже.
Часть проблемы заключается в
Плагин css загружается в мое приложение.css.SCSS-файл, подобный этому
@import "fancygallery/css/uniform.aristo";
@import "fancygallery/css/jquery.fancygallery";
@import "fancygallery/css/prettyPhoto";
таким образом, все изображения связаны с этим.
Ответ №1:
Я смог решить эту проблему, добавив fancygallery-plugin
папку, а затем поместив fancygallery
папку туда. После этого asset:precompile
папка fancygallery
стала доступна в папке assets. Затем я просто вызвал файлы css и js напрямую, а не из файла application.css.scss, вот так:
<%= stylesheet_link_tag "fancygallery/css/uniform.agent.css" %>
<%= stylesheet_link_tag "fancygallery/css/jquery.fancygallery.css" %>
<%= stylesheet_link_tag "fancygallery/css/prettyPhoto.css" %>
<%= javascript_include_tag "fancygallery/js/jquery.uniform.min.js" %>
<%= javascript_include_tag "fancygallery/js/jquery.fancygallery.min.js" %>
<%= javascript_include_tag "fancygallery/js/jquery.prettyPhoto.js" %>
Это позволяет ссылкам на изображения работать так, как задумал разработчик плагина, и они нормально загружаются.
Комментарии:
1. Куда вы поместили папку «fancygallery-plugin»?