将chartkick
与wicked-pdf
一起使用。
应用程序/布局/ pdf.html.erb
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
<%= wicked_pdf_stylesheet_link_tag 'application', media: 'all' %>
<%= wicked_pdf_javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= javascript_include_tag "http://www.google.com/jsapi"%>
<%= wicked_pdf_javascript_include_tag 'chartkick'%>
</head>
<body onload='number_pages'>
<div id="header">
<h2>Report</h2>
</div>
<div id="content">
<%= yield %>
</div>
但它在此行上出错了
<%= wicked_pdf_stylesheet_link_tag 'application', media: 'all' %>
错误
undefined method `start_with?' for nil:NilClass
我如何删除它? 错误
ActionView::Template::Error (undefined method `start_with?' for nil:NilClass):
2: <html>
3: <head>
4: <meta charset='utf-8' />
5: <%= wicked_pdf_stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6: <%= wicked_pdf_javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7: <%= javascript_include_tag "http://www.google.com/jsapi"%>
8: <%= wicked_pdf_javascript_include_tag 'chartkick'%>
app/views/layouts/pdf.html.erb:5:in `_app_views_layouts_pdf_html_erb___3130978149028204091_70042742447040'
app/controllers/campaigns_controller.rb:104:in `block (2 levels) in survey_reporting'
app/controllers/campaigns_controller.rb:101:in `survey_reporting'
答案 0 :(得分:3)
我通过创建一个特定的pdf.css.scss
文件并导入了我的自定义样式(estilo.css
)和font-awesome style
来解决了这个问题。
/*# pdf.css.scss
@import "font-awesome";
@import "estilo";
我无法在那里导入bootstrap.css
文件,因为glyphicon
的src-url方法。它破了wicked_pdf
。
作为一种解决方法,我只是复制了bootstrap.css
文件中的所有pdf.css.scss
文件并删除了所有关于glyphicon
的文件,因为我在生成的PDF文件中根本没有使用它。
不要在bootstrap.css
文件中复制和粘贴所有pdf.css.scss
来源,而是执行此操作:
请按照以下步骤here;
在bootstrap.css
中为您config/application.rb
文件位置添加一行。它应该是这样的:
/*# config/application.rb
config.assets.paths << "#{Rails.root}/app/assets/stylesheets/font-awesome-4.2.0/css/"
config.assets.paths << "#{Rails.root}/app/assets/stylesheets/bootstrap/"
config.assets.paths << "#{Rails.root}/vendor/assets/fonts"
最后在pdf.css.scss
文件中添加bootstrap导入。它应该是这样的:
/*# pdf.css.scss
@import "bootstrap";
@import "font-awesome";
@import "estilo";
通过这一切,wicked_pdf
读取src-urls方法将起作用!
答案 1 :(得分:2)
问题解决了!
替换
<%= wicked_pdf_stylesheet_link_tag "application" %>
与<%= stylesheet_link_tag wicked_pdf_asset_base64("pdf") %>
答案 2 :(得分:1)
我有同样的问题。我的问题是我的application.css.scss包含了Docs npm软件包。该软件包的问题在于资产路径似乎在其中断开,导致箭头不显示。我猜wicked_pdf_stylesheet_link_tag不会忽略它无法像正常的stylesheet_link_tag那样找到资产并导致错误的事实。创建一个专门用于PDF的新css文件并删除lightbox2参考可以解决我们的错误。
答案 3 :(得分:0)
在@import "bootstrap-sprockets"
之前添加@import "bootstrap"
:
@import "bootstrap-sprockets"
@import "bootstrap"
选中此link
答案 4 :(得分:0)
要解决此问题, 创建一个文件app / assets / stylesheet / bootstrap.css 然后从任何CDN复制粘贴引导CSS。 现在,将此文件包含在您使用的布局中。 例如:pdf.html.erb
<!DOCTYPE html>
<html>
<head>
<title>PDF</title>
<%= stylesheet_link_tag wicked_pdf_asset_base64("bootstrap") %>
</head>
<body>
<div class='container'>
<%= yield %>
</div>
</body>
</html>
和控制器端的脚本类似:
def job_invoice_view
respond_to do |format|
format.html { render :layout => 'tukaweb' }
format.pdf do
render pdf: "Your_filename",
template: "users/job_invoice_view.html.erb",
layout: 'pdf',
viewport_size: '1280x1000'
end
end
end