2012-06-07 35 views
5

我有一个这样的控制器:WickedPDF失踪布局

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

而且这样一个简单的观点:

<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]} 

所以,后来我改变了我的控制器#show动作是这样的:

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 

,可以帮助我渲染视图,但不幸的是它不呈现样式和布局。我的问题是:

  1. 为什么我需要指定模板?
  2. 为什么布局不在PDF中呈现?

回答

10

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

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

另外,您可能需要使用wicked_pdf_stylesheet_link_tag帮助程序来显示样式。如果你想有一个双重目的的观点,那么这样的事情可能是必要的:

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

http://stackoverflow.com/questions/23077118/image-header-on-pdf-using-wicked-pdf -and-wkhtmltopdfupdated plz帮助此查询 –