gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:26:50 35 4
gpt4 key购买 nike

我在开发中成功地将 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/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com