我有一个应用程序,您可以在其中存储订单/发票。我正在构建一个简单的功能,您可以在其中为我的客户复制发票。我在我的 Order.rb 模型中编写了这个方法:
获取发票,复制相关的 lineitems,将新的 OrderID 添加到它们中......并对相关的图像执行相同的操作。
def self.duplicate_it(invoice)
new_invoice = invoice.dup
new_invoice.save
invoice.lineitems.each do |l|
new_lineitem = l.dup
new_lineitem.order_id = new_invoice.id
new_lineitem.save
end
invoice.images.each do |i|
new_image = i.dup
new_image.order_id = new_invoice.id
new_image.save
end
return new_invoice
end
不幸的是,您不能只.dup
使用图像,因为我将图像存储在 S3 上,所以所有这些关联到期的东西。有没有办法使用它的 image_url 重新生成图像?
运行时我得到的错误如下。这告诉我并非所有相关的图像信息都被正确复制。
Showing /Users/bruceackerman/Dropbox/printavo/app/views/orders/_image-display.erb where line #3 raised:
undefined method `content_type' for nil:NilClass
Extracted source (around line #3):
1: <% @order.images.each do |image| %>
2: <% if image.image && image.image.file %>
3: <% if image.image.file.content_type == "application/pdf" %>
4: <%= link_to image_tag("/images/app/pdf.jpg",
5: :class => 'invoice-image'),
6: image.image_url,