ruby-on-rails-3.1 - wicked_pdf + rails 的 Assets 管道 + 生产中的 sass 导入

标签 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

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

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

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

最佳答案

我在开发和生产中工作的 pdf 很糟糕。这是我的 wicked_pdf 配置的核心:

我已经根据 wicked_pdf pull request 更新了 WickedPdfHelper(从初始化程序/wicked_pdf.rb 加载)来自 github 用户 antti

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 应用程序以引入更改)

关于ruby-on-rails-3.1 - wicked_pdf + rails 的 Assets 管道 + 生产中的 sass 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680814/

相关文章:

ruby-on-rails-3.1 - 如何制作密码更改表单?

node.js - Node Sass 还不支持你当前的环境 : Linux 64-bit with false

javascript - 单个 Javascript 函数无法在 Heroku 上运行

ruby-on-rails - Rails - 将 css 文件放在哪里?

ruby-on-rails - rails : Use livereload with Asset Pipeline

sass - 使用 snowpack 和 sass 获取 svelte-material-ui

firefox - icoMoon 字体在 Firefox 上不显示

ruby-on-rails - Rails 3.1 管道 - 排除 Javascript 文件

ruby-on-rails - 液体中的 Rails javascript_include_tag 标签

ruby-on-rails - VirtualBox 下 Ubuntu 11.10 上的 Rails 3.1 非常慢