Wicked_PDF无法呈现正确的模板

时间:2018-10-15 21:58:56

标签: ruby-on-rails ruby-on-rails-5 wicked-pdf

您好,我有一份撰写建议书的申请。我正在尝试设置wicked_pdf以生成pdf,并且由于某种原因其未使用正确的模板。它使用的是我的应用程序模板,而不是我的pdf模板。

app / controllers / proposals_controller.rb

def show
    @proposal = Proposal.find(params[:id])
    @custom_content = @proposal.custom_contents
    respond_to do |format|
      format.html
      format.pdf do
        render pdf: "some_name",
               template: "proposals/show.pdf.erb",
               layout: "pdf.html",
               margin: { top: 35, bottom: 35 }
      end
    end
  end

app / views / layouts / pdf.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>PDF</title>
  <%= wicked_pdf_stylesheet_link_tag "application" -%>
</head>
<body>
<div class='container d-flex justify-content-center'>
  test 2
  <%= yield %>
</div>
</body>
</html>

app / views / proposals / show.pdf.erb

<div class="row full-page justify-content-center" id="cover">
  <div class="container">
    <div class="row p-0">
      <div class="col-12 d-flex align-items-end ">
        <%= wicked_pdf_image_tag '1209232_1920-1.jpg' %>
      </div>
    </div>
    <div class="row pt-1 d-flex align-items-end text-justify">
      <div class="col-12 text-justify cover-background">
        <div class="row pt-1">
          <h2 class="text-white text-justify">Proposal For <br> Maintenance</h2>
        </div>
        <div class="row p-0">
          <div class="col-6">
            <h5 class="text-white text-justify">Prepared For: <%= @proposal.contact.name %></h5>
            <h6></h6>
          </div>
          <div class="col-6">
            <h5 class="text-white text-justify">Prepared By: <%= @proposal.user.name %></h5>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

config / initializers / wicked_pdf.rb

# WickedPDF Global Configuration
#
# Use this to set up shared configuration options for your entire application.
# Any of the configuration options shown here can also be applied to single
# models by passing arguments to the `render :pdf` call.
#
# To learn more, check out the README:
#
# https://github.com/mileszs/wicked_pdf/blob/master/README.md

WickedPdf.config = {
    }

config / initializers / mime_types.rb

# Be sure to restart your server when you modify this file.

# Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf
Mime::Type.register "application/pdf", :pdf

我觉得我已经看了这么长时间,以至于我可能错过了明显的地方。我什至运行了一个示例应用程序进行测试...而该应用程序没有任何问题。

我跟随了这个很棒的教程-https://medium.com/@yazed.jamal/using-wicked-pdf-with-rails-5-3d1a4b0a09ba

非常感谢您的帮助

要注意的另一件事是创建的文件不是“ some_name”,而是id .pdf

我的按钮位于我的app / views / proposals / _proposal-cover.html.erb中 这是我的app / views / proposals / show.html.erb

中的一部分
<%= link_to 'Download', proposal_path(@proposal, :format => :pdf), class: 'btn btn-default'  %>

2 个答案:

答案 0 :(得分:2)

尝试以下操作。我在应用程序中使用了wicked,此结构对我有用,希望对您有用。

显示

<%= link_to 'Download', proposal_path(format: 'pdf'), class: 'btn btn-default'  %>

控制器

format.pdf do
 render pdf: "some_name",
  template: "proposals/show",
  margin: { top: 35, bottom: 35 }
end

答案 1 :(得分:2)

我要感谢@dollarchills和@nourza。两者都对这个有很大帮助。

事实证明,其他开发人员已经安装了以下内容

  

如果您希望WickedPdf自动生成PDF视图   对于所有(或几乎所有)网页,只需将.pdf附加到网址中,   关注您的Rails应用:

在application.rb(Rails3)或environment.rb(Rails2)

require 'wicked_pdf'
config.middleware.use WickedPdf::Middleware

它将覆盖其他所有内容