在哪里放相同的代码?混入?

时间:2014-11-08 09:23:11

标签: ruby-on-rails ruby ruby-on-rails-4

我在我的Formular - 文件夹中创建了一个类lib,该文件夹由extend模块创建,该文件夹也分配在我的lib - 文件夹中:

它看起来像这样: formular.rb

class Formular
  extend Userfield
  def self.ueberweisung
    ..................
    pdf = Prawn::Document.new(:page_size => [width,height], :margin => 0 )
    pdf.image image_path, :at  => [w, height], :fit => [width,height]

    create_userfield

    pdf.stroke_line [w + 9.1.mm, h - 60.mm], [w + 14.2.mm, h - 65.mm]
    ..................

create_personenfeld userfield.rb

中定义
module Userfield 
  def create_userfield
      pdf.font("Courier", :size => 12) do
        pdf.draw_text "Thanks for your help", :at => [w + 11.mm, h - 13.mm]
        ..........

我猜错了因为pdf中的defined不是def create_userfield

 undefined local variable or method `pdf' for Formular:Class

现在我的问题是我应该在哪里提出这样的方法?所以我不必将每个变量传递给它?

感谢

1 个答案:

答案 0 :(得分:0)

您还可以添加一个名为pdf的类变量:

attr_accessor :pdf

它将在课程的所有方法之间共享,您可以将其称为PDF格式为@pdf。

示例:

> module Animal
>   def say
      @word
>   end
> end
> class Doge
>   include Animal
>   attr_accessor :word
>   def initialize
>     @word = 'such cool feature'
>   end
> end

> dog = Doge.new
> dog.say
=> 'such cool feature'