wicked_pdf рендеринг изображений - PullRequest
4 голосов
/ 15 октября 2011

как получить изображения продукта для показа в формате PDF?

У меня есть этот код в файле просмотра

<div id="img-slide">
    <% for asset in @car.assets %>
    <%= image_tag(asset.asset.url(:medium)) %>
    <% end %>
</div>

и показывает все изображения для этого автомобиля.

но если я использую тот же код в show.pdf.erb, то вместо изображений я получаю только вопросительные знаки ... как на изображении отсутствует вещь. Итак, есть ли способ получить их на бумаге? Спасибо.

p.s. есть какая консоль показывает

***************WICKED***************
  Asset Load (0.2ms)  SELECT `assets`.* FROM `assets` WHERE (`assets`.car_id = 29)
  Carmodel Load (0.2ms)  SELECT `carmodels`.* FROM `carmodels` WHERE `carmodels`.`id` = 28 LIMIT 1
Rendered cars/show.pdf.erb (255.2ms)
"***************/usr/bin/wkhtmltopdf       -q - - ***************"

обновление

<%= pdf_image_tag('/public/system/assets/163/medium/2011_lincoln_navigator_l_angularfront.jpg', :style=>"margin:0px;padding:0px", :width=>"300", :height=>"240")%>

этот код показывает, как должна выглядеть ссылка в html, с помощью этого кода я могу отобразить одну фотографию автомобиля, но она будет одинаковой для всех автомобилей, поэтому я мало что сделал.

число 163 является идентификатором активов, которые назначены для автомобиля, здесь я держу одно изображение большего размера (большой, средний, большой ...), и я получил 5 карт с разными номерами для одной машины. Таким образом, у меня есть много карт с такими номерами, так как у меня есть как минимум 5 фотографий для каждой машины. У каждой машины есть 5 активов. В show.html я их вижу, но не в pdf. Я сделал это в приложении помощник:

def pdf_image_tag(image, options = {})
  options[:src] = File.expand_path(RAILS_ROOT) + '' + image
  tag(:img, options)
end

но это только для изображений, которые у вас есть на вашем сервере и будут одинаковыми для всех автомобилей, как я могу получить хотя бы одно изображение каждого автомобиля для показа в pdf? Pleaseeeee. помогите !!! * * 1023

Ответы [ 3 ]

29 голосов
/ 08 ноября 2012

Версия 0.7.9 - это

<%= wicked_pdf_image_tag 'myfile.jpg' %>

В основном возвращает абсолютный путь в файловой системе:

file:///path/to/image/myfile.jpg

Также см .: https://github.com/mileszs/wicked_pdf

7 голосов
/ 17 октября 2011

хорошо, поэтому я нашел ответ

код <%= image_tag(asset.asset.url(:medium)) %> генерирует URL-адрес изображения, которое в html будет выглядеть как <img alt="2012_bmw_7_series_gearshift" src="/system/assets/174/original/2012_bmw_7_series_gearshift.jpg?1318267462">, поэтому мои изображения начинаются с карты системы, и все, что мне нужно было сделать, этонаписать метод в application_helper.rb следующим образом:

module ApplicationHelper

 def pdf_image_tag(image, options = {})
  options[:src] = File.expand_path(RAILS_ROOT) + '/public' + image
  tag(:img, options)
 end
end

таким образом, wiked_pdf будет знать, что тег изображения с именем pdf_image_tag будет запускаться из общедоступной системной папки, а конечный код для файла pdf.html.erb будет:

<% for asset in @car.assets %>
  <%= pdf_image_tag(asset.asset.url(:medium), :style=>"margin:0px;padding:0px", :width=>"250", :height=>"200")%>
<% end %>

было легко, но все же мне потребовалось несколько дней, чтобы понять это.Хороший день.

6 голосов
/ 06 июля 2015

Вместо использования wicked_pdf_image_tag помощника можно использовать вместе помощники рельсов image_tag и image_url, чтобы получить абсолютный путь к изображению (это то, что требуется для wicked_pdf драгоценного камня):

image_tag image_url('dir/image.png')

здесь dir/image.png - путь к изображению относительно стандартного местоположения в приложении rails (app/assets/images для изображений).

...