0
Что не так с этим методом? Я полностью в тупике. Я получаю эту ошибку на img.write(res)
линии:Рельсы: креветка PDF to rmagick output
ArgumentImage no images in this image list
Вот метод контроллера:
def convert_to_image
@document = Document.find(params[:document_id])
img = Magick::ImageList.new
pdf = Prawn::Document.generate("tmp.pdf", :margin => 0, :page_size => [398, 398]) do |p|
res = @document.post_pdf(p)
img.write(res)
send_data img
end
end
Метод post_pdf
упоминалось выше выглядит следующим образом:
def post_pdf(p)
size = 398
p.image self.user.logo.path, :width => size
p.bounding_box([30, 490], :width => size) do
p.fill_color self.user.colour1
p.pad_bottom(10) { p.text self.title, :size => 28, :style => :bold }
p.fill_color '#444444'
end
self.components.each do |component|
p.image component.image_newsletter.path, :width => size
p.fill_color self.user.colour1
p.fill_rectangle([0, 20], size, 20)
end
end
Возможно, вам стоит вернуть что-то из 'post_pdf'? например 'p' ... На данный момент это, вероятно, возвращает массив' self.components'. – j03w
Я думал, Rails автоматически возвратил объекты в блоках? Я проверю это. –
'post_pdf (p)' возвращает последний оператор, который в вашем случае является 'self.components.each'. Блок, который вы передали 'each', будет' yield' внутри 'each' scope. После этого 'each' вернет исходный массив. http://www.ruby-doc.org/core-2.0.0/Array.html#method-i-each Функции, которые принимают 'block', могут или не могут возвращать результаты' block', так что не полагайтесь на это. – j03w