1

我有一个存储在出勤模型中的不同教学活动的出勤列表,我想根据这些数据创建证书。

我的问题是对虾的格式似乎都不起作用。我无法更改文本大小、重量、位置、使用模板等。似乎没有任何工作正常。

我的代码如下:

在出勤控制器中显示方法

 def show
    @attendance = Attendance.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @attendance }

      format.pdf do
         pdf = CertificatePdf.new(@attendance)
         send_data pdf.render, type: "application/pdf", disposition: "inline", filename: "Certificate"
      end
    end
  end

证书_pdf.rb

class CertificatePdf < Prawn::Document
  def initialize(attendance)

    start_new_page(:template => "/pdfs/certificate_template.pdf")
    @attendance = attendance

    attendance_info
  end

  def attendance_info
    move_down(70)
    text "This is to certify that"
    text "#{@attendance.student.fname}" + " " + "#{@attendance.student.lname}", :size => 24
    text "Attended the " "#{@attendance.teaching_session.title}" + " " + "#{@attendance.teaching_session.teaching_format.format}"
    text "On " "#{@attendance.teaching_session.date}"
  end
end

如果有人可以请建议我将非常感激。

最好的祝愿,

麦克风

4

2 回答 2

0

你用的是什么版本的虾?

我认为在最新版本中,他们转移到了您可以这样调用的 formatted_text 方法:

formatted_text [ {:text => "Text you want to format.", :size => 24 } ]

请参阅 text/formatted_text.rb 的虾手册部分:

http://prawn.majesticseaacreature.com/manual.pdf

于 2013-10-09T23:48:42.253 回答
0

您正在覆盖该方法initialize,因此(所有文档设置发生的地方)的方法没有被执行。initializePrawn::Document

你应该调用super你重写的initialize方法。请注意,您可能需要一组空参数(使用super()),否则您的attendance对象将被传递给Prawn::Document.new它并且它不知道如何处理它:

def initialize(attendance)
  super()

  start_new_page(:template => "/pdfs/certificate_template.pdf")
  @attendance = attendance

  attendance_info
end
于 2013-10-07T19:21:35.070 回答