1

動的コンテンツから生成された HTML ファイルから PDF を生成しようとしています。そのため、HTML コンテンツを取得して PDF をレンダリングするコントローラー アクション「generate_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) { }}
...

render_to_stringunderscore.js テンプレートをレンダリングする内部で使用できる JavaScript 環境はありません。どうすればこの状況に対処できますか? 私たちのテンプレートのほとんどは underscore.js にあるため、PDF 専用の別のテンプレート ( ERB で) を作成する代わりに、できるだけ多くのテンプレートを再利用することが理にかなっていると考えました。

4

0 に答える 0