gpt4 book ai didi

ruby-on-rails-3 - Wicked_PDF 缺少布局

转载 作者:行者123 更新时间:2023-12-04 17:25:07 27 4
gpt4 key购买 nike

我有一个这样的 Controller :

def show
@professor = Professor.find(params[:id])
respond_to do |format|
format.html
format.pdf do
render :pdf => "file_name"
end
end
end

一个像这样的简单 View :
<p>Professor: <%= @professor.first_name %></p>
<p>Email: <%= @professor.email if @professor.email %></p>

我也有一个布局“application.html.erb”;
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= content_for?(:title) ? yield(:title) : "Myapp" %></title>
<meta name="description" content="">
<meta name="author" content="">
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<%= yield(:head) %>
</head>
<body>
<header class="navbar navbar-fixed-top">
<nav class="navbar-inner">
<div class="container">
<%= render 'layouts/navigation' %>
</div>
</nav>
</header>
<div id="main" role="main">
<div class="container">
<div class="content">
<div class="row">
<div class="span12">
<%= render 'layouts/messages' %>
<%= yield %>
</div>
</div>
<footer>
</footer>
</div>
</div> <!--! end of .container -->
</div>

当我执行以下命令时:
bundle exec wkhtmltopdf 'http://local.myapp.com:3000/professors/2' - > test.pdf

我得到了一个包含所有样式和布局的 pdf。

然而,当我去 http://local.myapp.com:3000/professors/2.pdf我收到一条错误消息:
Missing template professors/show with {:locale=>[:en], :formats=>[:pdf], :handlers=>[:erb, :builder, :coffee]}

所以,然后我改变了我的 Controller #show Action 是这样的:
def show
@professor = Professor.find(params[:id])
respond_to do |format|
format.html
format.pdf do
render :pdf => "file_name",
:template => 'professors/show.html.erb'
end
end
end

这有助于我渲染 View ,但不幸的是它不会渲染样式和布局。我的问题是:
  • 为什么需要指定模板?
  • 为什么布局没有在 PDF 中呈现?
  • 最佳答案

    您需要将 View 重命名为 show.pdf.html.erb 或创建一个新的 show.pdf.erb。

    文件名中的 .pdf 让处理程序知道它可以使用它。

    此外,您可能需要使用 wicked_pdf_stylesheet_link_tag 助手来显示您的样式。如果你想要一个双重用途的 View ,那么可能需要这样的东西:

    <% if params[:format] && params[:format] == 'pdf' %>
    <%= wicked_pdf_stylesheet_link_tag 'application' %>
    <% else %>
    <%= stylesheet_link_tag 'application' %>
    <% end %>

    关于ruby-on-rails-3 - Wicked_PDF 缺少布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10941028/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com