Подтвердить что ты не робот

Rails 3.1, обслуживающий изображения от поставщика/активов/изображений

Я пытаюсь поместить некоторые внешние изображения (используемые плагином jQuery) поставщику/активам/изображениям в моем приложении Rails 3.1. Проблема в том, что когда я пытаюсь что-то вроде:

<%= image_tag "ui-bg_flat_75_ffffff_40x100.png" %>

Я получаю сообщение об ошибке:

No route matches [GET] "/assets/ui-bg_flat_75_ffffff_40x100.png"

Я проверил мои Rails.application.config.assets.paths и перечислил эти dirs:

..../app/assets/images
..../app/assets/javascripts
..../app/assets/stylesheets
..../vendor/assets/images
..../vendor/assets/stylesheets
..../.rvm/gems/[email protected]/gems/jquery-rails-1.0.9/vendor/assets/javascripts

Как вы можете увидеть /vendor/assets/images. Если я поместил свое изображение в приложение/активы/изображения, все будет работать.

Я думал, что новый конвейер активов должен был пройти через все активы dirs и обслуживать запрошенный файл там, где он его найдет.

Кто-нибудь знает, в чем проблема?

4b9b3361

Ответ 1

Мне пришлось перезапустить сервер rails после создания каталога vendor/assets/images. До этого я видел ту же ошибку, что и вы ( "Нет маршрутов соответствует [GET]" ).

Я предполагаю, что сервер rails не проверяет эти каталоги, если они не существовали, когда он был впервые запущен. Когда вы открываете консоль рельсов для диагностики проблемы, вы получаете новый экземпляр рельсов, который знает о каталоге, что только добавляет к путанице.

Ответ 2

Если вы используете тему ролика JQuery UI Theme Roller, проблема может заключаться в том, что в файле jquery-ui css изображения ссылаются в подкаталоге "изображения".

т.е. вам либо нужно поместить свои изображения в папку './app/assets/images/images', либо вам нужно отредактировать файл jquery-ui css и удалить префикс папки "images/".

Ответ 3

Конвейер активов описан в этом руководстве по направляющим Ryan Bigg (статус проекта на данный момент).

http://ryanbigg.com/guides/asset_pipeline.html и http://ryanbigg.com/2011/06/sprocket-asset-tags-internals/ для ссылки.

В соответствии с этим ваш пример должен работать.

Extract:

Активы могут быть размещены внутри приложения в одном из трех местоположений: app/assets, lib/assets или vendor/assets.

app/assets - это активы, принадлежащие приложению, такие как пользовательские изображения, файлы javascript или таблицы стилей.

lib/assets предназначен для вашего собственного кода библиотек, который действительно не подходит для области приложения или тех библиотек, которые доступны для разных приложений.

поставщик/активы - это активы, принадлежащие внешним организациям, такие как код для плагинов JavaScript.

Любой подкаталог, который существует в этих трех местах, будет добавлен в путь поиска для Sprockets (видимый вызовом Rails.application.config.assets.paths в консоли). Когда запрашивается актив, эти пути будут просматриваться, чтобы узнать, содержат ли они активы, соответствующие указанному имени. После того, как актив найден, его обработал Sprockets, а затем подал заявку.

Я тестировал пример в своем приложении и тот же синтаксис, что и ваш. Возможно, у вас есть опечатка во имя вашего актива.

Для Мартина: путь поиска для Sprockets можно увидеть, вызвав Rails.application.config.assets.paths в консоли.

Ответ 4

Возможно, вам нужно создать другую папку в /assets/images. Вы создаете имя "изображения", а затем просто копируете все изображения jquery-ui и вставляете их в папку "изображения", которые вы создавали ранее. Надеюсь, это поможет вам.