2012-06-07 19 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幫助此查詢 –