我的路径有问题。在我的模型中,我有以下设置:
class Pdffiles < ActiveRecord::Base
belongs_to :user
has_attached_file :invoice_file,
:path => ":rails_root/public/pdffiles/:user_id/:style/:basename.:extension",
:url => "/pdffiles/:user_id/:style/:basename.:extension",
:storage => :s3,
:bucket => '...',
:s3_credentials => {
:access_key_id => '...',
:secret_access_key => '...'
}
end
并在控制器中查看我的操作:
pdf = Prawn::Document.new
pdf.move_down 70
pdf.text("Prawn Rocks")
pdf.render_file('prawn.pdf')
pdf_file = File.open('prawn.pdf')
pdff = Pdffile.new()
pdff.pdffile_file = pdf_file
pdff.user_id = todays_user.id
pdff.save
我的问题是,这个PDF文件存储在S3服务器上,但是在不好的地方。相反,目录app/public/pdff/id_of_a_user/file_name_of_pdf_file
是保存到
Users/my_name/my_ruby_root_directory/name_of_my_project/public/pdffiles/id_of_a_user/file_name_of_pdf_file
。
我不完全确定,如果我使用大虾正确保存PDF文件,但我认为问题可能出在控制器中,我已经设置了这个地方,在那里必须保存创建的文件...
我想问你,为了将PDF文件保存到S3中的正确目录,我应该做些什么改变...所有帮助将不胜感激!
曼尼谢谢,9月
答案 0 :(得分:2)
您可以使用类似CarrierWave(https://github.com/jnicklas/carrierwave)的内容 - 使用FOG库https://github.com/jnicklas/carrierwave
可以非常轻松地上传到S3答案 1 :(得分:1)
路径的Users/my_name/my_ruby_root_directory/name_of_my_project/public
部分来自您在回形针中配置的路径的:rails_root/public
部分。因此,如果您真的希望s3“目录”为app/public/pdff/id_of_a_user/file_name_of_pdf_file
,则需要给回形针提供以下路径:app/public/pdffiles/:user_id/:style/:basename.:extension
另外,根据您的型号,您应该使用pdff.invoice_file = pdf_file
代替pdff.pdffile_file = pdf_file
我希望这会有所帮助。