如何使用wicked_pdf宝石将HTML视图/部分视图转换为PDF视图?

3
def foo    
  respond_to do |format|
    format.html { render layout: 'application' }
    format.pdf { 
      render pdf: 'foo', layout: 'pdf'
    }
  end
end

如果我在 foo.pdf.erb 文件中只写入 hello world,它可以工作!

但是,如果我想使用 HTML 视图来迭代我的数据库模型:

<p>hello world</p>    
<%= render @foo.chapters.order(number: :asc) %>

出现了问题,页面保持灰色,日志中没有错误信息...

如果我注释掉这一行,hello world 就能正常运行。

所以问题出在使用了html partial:如何在pdf视图中使用普通的html视图?

1个回答

5
我尝试在Wicked PDF issues projectthis commit中重现您的问题,并成功完成了您展示的内容,但是有一个小问题。
使用Rails模型渲染简写:
# assuming @books = Book.all or some collection of Book objects
<%= render @books %>

它将尝试使用请求的扩展名渲染该集合。
也就是说,对于HTML请求,它将尝试在以下位置渲染模板:
app/views/books/_book.html.erb

对于PDF请求,它将尝试呈现

app/views/books/_book.pdf.erb

我通过将我的部分重命名为以下内容来解决这个问题:

app/views/books/_book.erb

所以它将被使用无论是HTML请求还是PDF请求。
如果这在你的情况下不起作用,你可以创建一个新的PDF部分,像这样呈现HTML。
# app/views/books/_book.pdf.erb
<%= render partial: '/books/book',
      formats: [:html],
      locals: { book: book } %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接