在rails应用程序中从多个模型创建pdf文件

七月

在我的 rails 应用程序中,用户在不同的模型中输入了大量数据。用户应该有可能从他在不同模型中输入的所有数据创建一个 pdf 文件。哪个 ruby​​ gem 提供此功能以及如何使用它?我已经研究过 Prawn,但无法弄清楚,它是否提供了使用来自不同模型的数据创建一个 pdf 的功能。

维贾杰德

这里排序教程如何使用prawn pdf打印相关模型

例如我有父模型,它有很多汽车(相关模型)

class Parent < ActiveRecord::Base
  has_many :cars, dependent: :destroy
  accepts_nested_attributes_for :cars, allow_destroy: :true
end

在我的控制器中,我定义如下

class ParentsController < ApplicationController

  def show
      @parent = Parent.find(params[:id])

      respond_to do |format|
        format.html     
        format.pdf do
            # here you call prawn pdf class (see below)
            pdf = ParentPdf.new(@parent)
            send_data pdf.render, filename: 'family.pdf',
                                  type: 'application/pdf',
                                  disposition: 'inline'
          end
        end
      end
    end
  end
end

您可以按照 app/pdf/parent_pdf.rb 创建文件夹和文件,它继承自 Prawn::Document 类

class ParentPdf < Prawn::Document

  def initialize(parent)
    # init margin and size
    super(top_margin: 5, left_margin: 5, page_size: 'A4', page_layout: :landscape, print_scaling: :none)

    # pass argument to variable
    @parent = parent
    # here is you access related models like you access from your controller
    @cars = @parent.cars
    # you print the model
    print_header 
    # and print related model
    print_detail
  end 

  def print_header
    bounding_box([420, 510], width: 350, height: 90) do
      text "name: #{@parent.name}", size: 11
    end
  end

  def print_detail
    font 'Helvetica'
    font_size 9
    @cars.each do |car|
      text "car: #{car.name}", size: 11
    end
  end

end

最后是通过超链接打印pdf的命令

<%= link_to 'print pdf', parent_path(parent, format: "pdf"), :class => 'btn btn-sm btn-secondary' %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Rails应用程序中为多个模型使用devise

多个模型文件或多个应用程序?

在Rails 4论坛应用程序中创建嵌套模型

在Rails应用程序中阅读PDF

RAILS应用程序中的多个API

从Ruby on Rails应用程序中的模型访问数据

如何使用多个XAML文件创建WPF应用程序?

如何在没有注释的Gemfile等文件中创建Rails应用程序?

我应该为我的 django 应用程序中的每个模型创建应用程序吗?

从哪里开始:在Android应用程序中创建PDF

如何在Rails 3.2应用程序中从具有不同键的两个模型创建数组?

在Tkinter应用程序中创建和分配多个变量

如何在iOS应用程序中创建多个列表

何时在Clojure Web应用程序中创建多个线程?

如何让我的应用程序创建/下载的文件显示在“文件”应用程序中?

QuickBlox会话创建:Rails应用程序中的意外签名

在 Rails 应用程序中创建 html 标签包装器

如何在 AngularJS 应用程序中预览 PDF 文件?

我想在我的应用程序中打开 .pdf 文件

无法在应用程序中打开.pdf文件

无法在外部应用程序中打开PDF文件

无法在我的应用程序中显示PDF文件

在 Flask 应用程序中从 PDF 文件中提取文本

通过R中的应用程序处理多个文件

elixir 伞形应用程序中如何处理多个应用程序配置文件

无法在 Android 应用程序中创建文件

在Rails应用程序中优化application.yml文件

在配置文件Rails 4中命名应用程序

如何在Rails应用程序中检测文件类型?