2016-09-11 6 views
0

Я хотел бы сгенерировать PDF-файл, поэтому я пытаюсь использовать PDFKit, но не удается.Rails4: у шаблона отсутствует ошибка с PDFKit

При щелчке по ссылке была отображена следующая ошибка.

ActionView::MissingTemplate (Missing template /show with {:locale=>[:en], :formats=>[:pdf], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: 
    * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/lib/action_dispatch/templates" 
    * "/home/ubuntu/workspace/app/views" 
    * "/usr/local/rvm/gems/ruby-2.3.0/gems/web-console-2.0.0.beta3/app/views" 

графики \ show.html.erb

<% provide(:title, @schedule.title) %> 
<%= render @schedules %> 

графики \ _schedule.html.erb

... 
    <%= link_to "PDF", schedule_path(schedule.id, format: "pdf"), class: "btn btn-sm btn-default" %> 
... 

schedules_controller.rb

... 
respond_to do |format| 
    format.html # show.html.erb 
    format.pdf do 
    html = render_to_string template: "show" 

    pdf = PDFKit.new(html, encoding: "UTF-8") 

    send_data pdf.to_pdf, 
     filename: "#{@scheudles.id}.pdf", 
     type:  "application/pdf", 
     disposition: "inline" 
    end 
end 
... 

Хотя я создаю show.pdf.erb и _schedule.pdf.erb, содержимое которого совпадает с html.erb, результат тот же.

ответ

1

Причины вы получаете Missing template /show потому, что от контроллера с использованием template: "show" не является достаточно специфичным для рельсов, чтобы знать, где в ваших взглядах папки, чтобы найти файл show.

Вы можете увидеть доказательства этого в своей ошибке, где говорится, что он искал show внутри ../app/views. Вам нужно использовать родительскую папку шаблона вместе с именем шаблона.

изменить это

format.pdf do 
    html = render_to_string template: "show" 
    ... 
end 

к этому

format.pdf do 
    html = render_to_string template: "schedules/show.html.erb" 
    ... 
end 
+0

Спасибо за ваш ответ, @MilesStanfield. Хотя я изменился на 'schedules/show.html.erb', появляется следующая ошибка. 'RuntimeError (команда failed (exitstatus = 0): /usr/local/rvm/gems/ruby-2.3.0/bin/wkhtmltopdf --encoding UTF-8 - формат A4 формата A4 --margin-top 0.25in - margin-right 1in --margin-bottom 0.25in --margin-left 1in - -): ' – SamuraiBlue

+0

ваш один шаг ближе сейчас :) Я помог вам прошлой предыдущей ошибкой и по достоинству оценил бы upvote. удачи! – MilesStanfield

+0

Спасибо за ваш комментарий и ответ, @ MilesStanfield. Моя проблема может быть другой причиной, о которой вы говорили. Было бы полезно, если бы вы могли проверить еще одну публикацию (http://stackoverflow.com/questions/39471547/rails-how-to-display-font-awesome-icons-on-pdf) – SamuraiBlue

0

просто изменить: действие => "show.html.erb"

HTML = render_to_string (: раскладка => ложно,: действие => "show.pdf.erb")

Надеется, что это помогает вы.