wicked_pdf + rails'资产管道+生产中的sass导入

时间:2011-10-06 21:42:36

标签: ruby-on-rails-3.1 sass asset-pipeline production wicked-pdf

我在开发中成功使用wicked_pdf和SASS。我要包含一个.scss文件,其中包含多个import规则,用于其他.sass.scss文件,通过此帮助程序:

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

但是切换到生产应用程序仍然会查找未找到的导入文件。

我已经添加了第二个清单文件,要在production.rb(config.assets.precompile += %w(pdf.css))中进行预编译,其中包含一个require规则来获取提到的.scss文件。这个文件编译得很好,但似乎帮助程序没有在生产中选择正确的文件,仍然看起来加载导入的.sass文件。

有没有人有经验如何解决这个问题? PDF创建需要绝对路径,这使得此任务更加困难。

2 个答案:

答案 0 :(得分:8)

我在开发和制作方面有邪恶的pdf。这是我的wicked_pdf配置的核心:

我已经根据来自github用户antti的wicked_pdf pull request更新了WickedPdfHelper(从initializers / wicked_pdf.rb加载)

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

然后在app / assets / stylesheets / pdf.css中我需要一些sass样式表:

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

(请记住,如果您正在修改初始化程序或config /中的任何内容,则需要重新启动rails应用程序以进行更改)

答案 1 :(得分:2)

我在http://anlek.com/2011/09/wicked_pdf-working-in-rails-3-1/

上写了一篇关于此的文章

与菲利普的解决方案非常相似,只做了一些修改。