I can upload a pdf file using
curl google.com | wkhtmltopdf - test.pdf
therefore, this means that the installation of wkhtmlpdf was successful.
But, when I try to create a pdf file by contacting http://localhost:3000/contacts/1.pdf , it freezes. The status bar displays: Waiting for localhost...
Rails server output:
Started GET "/contacts/1.pdf" for 127.0.0.1 at 2013-07-28 21:45:06 +0900 ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" Processing by ContactsController#show as HTML Parameters: {"id"=>"1"} Contact Load (0.3ms) SELECT "contacts".* FROM "contacts" WHERE "contacts"."id" = ? LIMIT 1 [["id", "1"]] Rendered contacts/show.html.erb within layouts/application (1.4ms) Completed 200 OK in 99ms (Views: 57.0ms | ActiveRecord: 0.7ms)
Gemfile:
gem 'pdfkit'
application.rb:
config.middleware.use "PDFKit::Middleware"
According to the PDFKit railscast, this should be enough to create pdf files by simply adding .pdf ...
UPDATE:
show.html.erb:
<p id="notice"><%= notice %></p> <p> <strong>Name:</strong> <%= @contact.name %> </p> <p> <strong>Age:</strong> <%= @contact.age %> </p> <%= link_to 'Edit', edit_contact_path(@contact) %> | <%= link_to 'Back', contacts_path %>
Layouts / application.html.erb:
<!DOCTYPE html> <html> <head> <title>Pdftest</title> <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> <%= csrf_meta_tags %> </head> <body> <%= yield %> </body> </html>
UPDATE 2:
Thanks to @Arman H, helping me understand that I should indicate an absolute path for assets instead of relative ones. When I deleted the following lines, I was able to create a PDF file:
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
Now I canβt figure out how to replace this with absolute paths . This message seems to be what I need, but I still canβt figure out how it will look for my case.