我正在尝试从 HTML 文件生成 PDF,该文件本身是从动态内容生成的。因此,有一个控制器操作“generate_pdf”,它采用 HTML 内容并呈现 PDF。pdf 生成位工作正常。生成 HTML 是我卡住的地方。
#reports_controller.rb
def generate_pdf
@report = Report.where(:id => params[:id])
html_content = render_to_string(:layout => false)
#Use the html_content to generate PDF
end
现在erb文件如下:
#views/reports/generate_pdf.html.erb
This is the generated pdf from erb.
The following is a generated content. The report's id is <%= @report.id %>
and the name is "<%= @report.name %>". </br>
It has <%= @report.items %> items.
这个没有任何下划线模板的 erb 效果很好,并且render_to_string
可以生成正确的 HTML 内容。
但是现在如果我使用 underscore.js 模板(同样的报告也显示在浏览器中,并且应用程序使用 Backbone.js 和 Underscore.js 很多)来生成报告的内容然后render_to_string
返回不正确的 HTML。不正确,我的意思是,输出是 underscore.js 模板代码本身,而不是实际内容。
{{ _.each(items, function(item) { }}
...
内部没有可用的 JavaScript 环境render_to_string
来呈现 underscore.js 模板。我该如何处理这种情况?由于我们的大多数模板都在 underscore.js 中,我们认为尽可能多地重用它而不是为 PDF 创建不同的模板(在 ERB 中)是有意义的。