5

Tôi đang sử dụng thành công wicked_pdf với SASS trong quá trình phát triển. Tôi bao gồm một .scss tập tin duy nhất, trong đó có nhiều quy tắc cho import.sass.scss file khác, qua helper này:wicked_pdf + đường ray tài sản của đường ray + nhập khẩu sass trong sản xuất

def wicked_pdf_stylesheet_link_tag(*sources) 
    sources.collect { |source| 
    "<style type='text/css'>#{Rails.application.assets.find_asset("#{source}.css").body}</style>" 
    }.join("\n").gsub(/url\(['"](.+)['"]\)(.+)/,%[url("#{wicked_pdf_image_location("\\1")}")\\2]).html_safe 
end 

Nhưng chuyển sang sản xuất các ứng dụng vẫn sẽ tìm kiếm các tập tin nhập khẩu mà không được tìm thấy.

Tôi đã thêm rồi tệp kê khai thứ hai được biên dịch trước trong production.rb (config.assets.precompile += %w(pdf.css)) có chứa một quy tắc require duy nhất để chọn tệp .scss được đề cập. Tệp này được biên dịch tốt nhưng có vẻ như trình trợ giúp không nhận đúng tệp trong quá trình sản xuất và vẫn có vẻ để tải các tệp .sass đã nhập.

Có ai có kinh nghiệm giải quyết vấn đề này không? Việc tạo PDF yêu cầu đường dẫn tuyệt đối, điều này làm cho công việc này trở nên khó khăn hơn một chút.

Trả lời

8

Tôi có pdf độc hại đang hoạt động trong quá trình phát triển và sản xuất. Đây là cốt lõi của cấu hình wicked_pdf tôi:

Tôi đã cập nhật WickedPdfHelper (nạp từ initializers/wicked_pdf.rb) dựa trên một wicked_pdf pull request từ github Antti dùng

module WickedPdfHelper 
    def wicked_pdf_stylesheet_link_tag(*sources) 
    sources.collect { |source| 
     "<style type='text/css'>#{Rails.application.assets.find_asset(source+".css")}</style>" 
    }.join("\n").html_safe 
    end 

    def wicked_pdf_image_tag(img, options={}) 
    asset = Rails.application.assets.find_asset(img) 
    image_tag "file://#{asset.pathname.to_s}", options 
    end 

    def wicked_pdf_javascript_src_tag(jsfile, options={}) 
    asset = Rails.application.assets.find_asset(jsfile) 
    javascript_include_tag "file://#{asset.pathname.to_s}", options 
    end 

    def wicked_pdf_javascript_include_tag(*sources) 
    sources.collect{ |source| "<script type='text/javascript'>#{Rails.application.assets.find_asset(source+".js")}</script>" }.join("\n").html_safe 
    end 
end 

sau đó trong ứng dụng/tài sản/stylesheets /pdf.css tôi đòi hỏi một vài stylesheets sass:

/* ... 
*= require ./_colors 
*= require_directory ./pdf 
*= require_self 
*/ 

(hãy nhớ rằng nếu bạn đang sửa đổi initializers hoặc bất cứ điều gì trong config /, bạn sẽ cần phải khởi động lại ứng dụng ray của bạn để kéo trong những thay đổi)

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