如何将 HTML 视图/部分到 PDF 视图与 wicked_pdf gem 一起使用?


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

如果我只放hello worldfoo.pdf.erb它就可以了!

但是现在,如果我想使用 html 视图来迭代我的模型(从数据库(,例如:

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

它不起作用,页面保持灰色,日志中没有错误...

如果我评论这一行,hello world再次起作用。

所以 issu 是关于使用 html 部分的:我们如何在 pdf 视图中使用普通的 html 视图?

我试图在 Wicked PDF 问题项目的提交中重现您的问题,并成功地完成了您在此处显示的内容,但是有一个小警告。

使用 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 } %>

最新更新