pol*_*lau 5 production sass ruby-on-rails-3.1 asset-pipeline 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
Run Code Online (Sandbox Code Playgroud)
但是切换到生产应用程序仍然会查找未找到的导入文件.
我已经添加了第二个清单文件,要在production.rb(config.assets.precompile += %w(pdf.css))中进行预编译,其中包含一个require用于获取上述.scss文件的规则.这个文件编译得很好,但似乎帮助程序没有在生产中选择正确的文件,仍然看起来加载导入的.sass文件.
有谁有经验如何解决这个问题?PDF创建需要绝对路径,这使得此任务更加困难.
我有邪恶的pdf从事开发和生产.这是我的wicked_pdf配置的核心:
我根据来自github用户antti 的wicked_pdf pull请求更新了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
Run Code Online (Sandbox Code Playgroud)
然后在app/assets/stylesheets/pdf.css中我需要一些sass样式表:
/* ...
*= require ./_colors
*= require_directory ./pdf
*= require_self
*/
Run Code Online (Sandbox Code Playgroud)
(请记住,如果您正在修改初始化程序或config /中的任何内容,则需要重新启动rails应用程序以进行更改)