(Rails) IMGKIT - Проблемы при экспорте изображений с помощью html и css

Я использую IMGKIT в одном из своих проектов, и мне пришлось использовать их css с опцией html, чтобы удовлетворить требования. Я заметил, что если таблицы стилей установлены следующим образом:

kit = IMGKit.new(html, :quality => 50)
kit.stylesheets << '/path/to/css/file'

и таблица стилей имеет свойство background с относительным url('image.png'), изображение не генерируется при экспорте с использованием kit.to_file:

(Rails.root + "public/pngs/" + "image.png")

Запрос зависает, и если мы заменим фоновый URL на полный URL протоколом, хостом и портом, он хорошо экспортируется.

Нужно ли мне иметь абсолютные URL для всех моих изображений в моей таблице стилей?

Я попытался определить asset_host в моем файле development.rb:

config.action_controller.asset_host = Proc.new { |source|
     "#{request.protocol}#{request.host_with_port}"
    }

Он заменяет URL в CSS, если я проверяю в браузере, но изображения не генерируются при экспорте через IMGKIT.

1 ответ

IMGKIT требует CSS с абсолютным URL для любого фонового изображения или других активов. Таким образом, вы можете генерировать его динамически по этой ссылке https://coderwall.com/p/exj0ig и с некоторыми шагами

A) Поместите все свои изображения в папку assets / images приложения rails

B) Установите гем 'sass-rails', если не установите https://github.com/rails/sass-rails

C) создайте другое имя файла CSS как css_file_name.css.sccs.erb

D) поместите в него все остальное содержимое css-файла.

E) В файле CSS просто введите имя файла изображения, как показано ниже: background-image: image-url ('image.png');

F) Использовать линию ресурсов ( http://guides.rubyonrails.org/asset_pipeline.html). В качестве режима приложения выполните команду ниже: (1) Режим разработки: RAILS_ENV= комплект разработки рейк-активы exec: прекомпиляция (2) Режим производства: RAILS_ENV= производственный пакет рейк-активы exec: прекомпиляция

G) В вашей конфигурации / средах /

(1) В файле development.rb config.action_controller.asset_host = "ВАШ ЛОКАЛЬНЫЙ ХОСТ-ТЕЛ, т.е. YOUR_LOCALHOST_ADDRESS"

(2) В production.rb config.action_controller.asset_host = " http://assets.example.com/" /ВАШ АДРЕС/

H) И, наконец, свяжите вашу таблицу стилей с IMGKIT, как показано ниже

html_content = "YOUR HTML CONTENT"
kit = IMGKit.new(html_content, height: 900, transparent:true, quality:10) /*YOUR SETTING*/
kit.stylesheets << "#{Rails.root}/public/assets/application.css"
file = kit.to_file(Rails.root + "public/pngs/" + "screenshot.png") /*YOUR IMAGE NAME*/
send_file("#{Rails.root}/public/pngs/screenshot.png", :filename => "screenshot.png", :type => "image/png",:disposition => 'attachment',:streaming=> 'true') /*YOUR ADDRESS WHERE U WANT TO STORE PNG FILE*/

Я) Перезагрузите сервер и наслаждайтесь!!!!!

[ПРИМЕЧАНИЕ: После каждого изменения, пожалуйста, запускайте команду assets pipline, чтобы получить последний файл application.css, созданный из файла расширения.sccs.erb.]

Другие вопросы по тегам