def foo
respond_to do |format|
format.html { render layout: 'application' }
format.pdf {
render pdf: 'foo', layout: 'pdf'
}
end
end
如果我只将hello world
放入foo.pdf.erb
就可以了!
但现在如果我想使用html视图来迭代我的模型(来自DB),如:
<p>hello world</p>
<%= render @foo.chapters.order(number: :asc) %>
它运行正常,页面保持灰色,日志中没有错误...
如果我对此行发表评论,hello world
会再次发挥作用。
所以issu是关于使用html partial:我们如何在pdf视图中使用普通的html视图?
答案 0 :(得分:2)
我尝试在this commit的Wicked PDF issues project中重现您的问题,并成功完成了您在此处展示的内容,但是有一个小小的警告。
使用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 } %>