2011-12-11 24 views
5

Tôi gặp sự cố với đường dẫn. Trong mô hình của tôi, tôi đã theo thiết lập:Làm thế nào để lưu trữ các tệp PDF tôm vào Amazon S3

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 

và trong một bộ điều khiển trông hành động của tôi này:

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 

Và vấn đề của tôi là, rằng tập tin PDF này được lưu trữ vào máy chủ S3, nhưng trên địa điểm xấu. Thay vào đó, thư mục app/public/pdff/id_of_a_user/file_name_of_pdf_file là tệp được lưu vào

Users/my_name/my_ruby_root_directory/name_of_my_project/public/pdffiles/id_of_a_user/file_name_of_pdf_file.

Tôi không hoàn toàn chắc chắn, nếu tôi sử dụng tôm để lưu tệp PDF ngay, nhưng tôi nghĩ rằng sự cố có thể nằm trong bộ điều khiển, nơi tôi đã thiết lập địa điểm, nơi tệp được tạo phải được lưu.

Tôi muốn hỏi bạn, những gì tôi nên thay đổi để lưu tệp PDF vào đúng thư mục trong S3 ... Tất cả trợ giúp sẽ được đánh giá cao!

Manny nhờ, Tháng

Trả lời

1

Phần Users/my_name/my_ruby_root_directory/name_of_my_project/public của con đường xuất phát từ :rails_root/public phần đường dẫn bạn đã định cấu hình trong kẹp giấy. Vì vậy, nếu bạn thực sự muốn s3 "thư mục" được app/public/pdff/id_of_a_user/file_name_of_pdf_file bạn cần phải cung cấp kẹp giấy đường dẫn sau: app/public/pdffiles/:user_id/:style/:basename.:extension

Ngoài ra, theo mô hình của bạn, bạn nên sử dụng pdff.invoice_file = pdf_file thay vì pdff.pdffile_file = pdf_file

Tôi hy vọng điều này sẽ giúp.

Các vấn đề liên quan