Плагины jQuery и Rails Asset Pipeline - PullRequest
       4

Плагины jQuery и Rails Asset Pipeline

1 голос
/ 04 ноября 2011

Я использую плагин jQuery под названием Fancy Gallery, который часто вызывает изображения из папки изображений в папке плагина, например 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 загружается в мой файл application.css.SCSS, например,

@import "fancygallery/css/uniform.aristo";
@import "fancygallery/css/jquery.fancygallery";
@import "fancygallery/css/prettyPhoto";

, поэтому все изображения связаны с этим.

1 Ответ

1 голос
/ 04 ноября 2011

Я смог решить эту проблему, добавив папку fancygallery-plugin, а затем опустив туда папку fancygallery. После asset:precompile папка fancygallery была доступна в папке ресурсов. Затем я просто вызвал файлы 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" %>

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

...