2012-06-07 20 views
5

मैं इस तरह एक नियंत्रक हैWickedPDF लापता लेआउट

<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 

हालांकि, मैं कह रहा कोई त्रुटि मिलती है जब मैं http://local.myapp.com:3000/professors/2.pdf पर जाएँ:

Missing template professors/show with {:locale=>[:en], :formats=>[:pdf], :handlers=>[:erb, :builder, :coffee]} 

तो, तो मैं अपने नियंत्रक # शो कार्रवाई बदल इस तरह होने के लिए:

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. पीडीएफ में लेआउट क्यों नहीं दिया जा रहा है?

उत्तर

10

आपको.pdf.html.erb दिखाने के लिए अपना नया नाम बदलने या एक नया show.pdf.erb बनाने की आवश्यकता है।

फ़ाइल नाम में .pdf हैंडलर को यह पता करने देता है कि यह इसका उपयोग कर सकता है।

इसके अलावा, आपको शायद अपनी शैलियों को दिखाने के लिए दुष्ट_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 इस क्वेरी के साथ मदद करें –