如何将ERB视图呈现为字符串?

时间:2014-09-02 10:35:37

标签: ruby-on-rails ruby ruby-on-rails-4 erb renderpartial

我正在尝试使用wicked_pdf gem将dyanmic HTMl转换为PDF。

这就是我所有的

class HomeController < ApplicationController
  def index
    @var = Hash.new
    @var = { first_name: "John", last_name: "Doe", address: "A & N", country: "India" }
    html = render "home/to_pdf.html.erb", locals: { var:@var }, layout: false 
    pdf = WickedPdf.new.pdf_from_string(html[0].to_s)

    save_path = Rails.root.join('pdfs','filename.pdf')
    File.open(save_path, 'wb') do |file|
      file << pdf
    end

    render :home  # or redirect_to is also acceptable
  end
end 

to_pdf.html.erb

<style type="text/css">
    .row {
        color: red;
    }
    .p {
        font-size: 20px;
        font-weight: bold;
    }
</style>
<h1>Hello World</h1>
<div class="row">
    <em><%= @var[:first_name] %></em>
    <em><%= @var[:last_name] %></em>
</div>
<div class="row">
    <em><%= @var[:address] %></em>
    <em><%= @var[:country] %></em>
</div>
<div class="sign">
    <br><br>
    SIgn Here
</div>

home.html.erb

<h1>Pdf created successfully</h1>

它成功渲染to_pdf.html.erb并成功创建并保存了pdf文件,但是 我得到了 DoubleRenderError 这很明显。

我想让它重定向或渲染到&#34; home&#34;

注意:如果我删除渲染&#34; home&#34;,那么我没有错误,但它会呈现 to_pdf.html.erb 而不是索引。 html.erb。

我只是想编译erb视图(这是动态的,你可以在上面看到使用@var)作为html,以便我可以将其转换为pdf。

1 个答案:

答案 0 :(得分:3)

erb渲染pdf您可以尝试render_to_string