Плагины jQuery и конвейер ресурсов Rails

#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 частей

  1. Как этот плагин должен интегрироваться с моим приложением rails 3.1? Должна ли папка быть размещена внутри папки vendors / assets? Плагин имеет 3 папки, css, изображения, js. Если я помещу их в vendor/assets/stylesheets , vendor/assets/images , vendor/assets/javascripts , css, безусловно, не сможет найти изображения в ../images папке, поскольку она больше не будет существовать после завершения конвейерной обработки ресурсов. Итак, где это должно быть размещено?

  2. Есть ли простой способ, с помощью которого мне не нужно заходить в мой плагин и редактировать 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»?