2017-08-22 4 views
-1

Ich versuche, Programm gestartet zu bekommen, wo ich nicht lesen kann in einer CSV-Datei und es druckt die Daten aus einer PDF-Datei. Jetzt habe ich ein Problem. Heres ist mein Code:Falsche Garnelenmethode oder falsches Objekt?

------------------------------------ 
require_relative 'friends' 

class List 

    attr_accessor :list_name, :list 

    def initialize(list_name) 
    @list_name = list_name 
    @list = [] 
    end 

    def list_name 
    @list_name 
    end 

    def liste 
    @list 
    end 

    def wert(place) 
    @list[place].to_s 
    end 

    def list_length 
    @list.length 
    end 

    def print_list 
    @list.each do |freunde| 
    "#{freunde.name},#{freunde.age}" 
    end 
    end 

    def add_friend(a_friend) 
    @list.push(a_friend) 
    end 

    def load_friend(from_file) 
     File.readlines(from_file).each do |line| 
     add_friend(Freunde.from_csv(line)) 
     end 
    end 

end 
------------------------------------------- 

    require_relative 'list' 

    class Friends 

    attr_accessor :name,:age 

    def initialize(name, age) 
     @name = name 
     @age = age 
    end 

    def self.from_csv(string) 
     name, age = string.split(',') 
     Freunde.new(name,age) 
    end 

    def friends 
    @name 
    end 
    end 
------------------------------------------- 

require 'prawn' 
require_relative 'list' 
require_relative 'friends' 


class Generating 
include Prawn::View 

    def initialize 
    @document = Prawn::Document.new(:page_size => "A4") 
    @fontpath = File.expand_path("../data/fonts", __FILE__) 
    liste1 = Listen.new("Friendslist") 
    liste1.load_friend("test.csv") 
    print_list 
    save 
    end 

    def print_friends 
    font("#{@fontpath}/Arial.ttf") do 
     font_size 11 
     text_box("#{liste1.print_list}", :at => [15,405], :height => 50, 
     :width => 250) 
end 
    end 

    def save 
    self.render_file "Hello.pdf" 
    end 
end 
--------------------------------------------- 

Wenn ich jetzt ein neues Erzeugungs-Objekt erstellen:

gen = Generating.new 

dann scheitert es das ganze Programm, da der Fehler sagt Methode unknow (print_list). Gebe ich das falsche Objekt für die Methode (print_list) ein, oder verwende ich die Textausgabemethoden von Prawn falsch?

+0

"der Fehler sagt Methode unknow (print_list)" - ich * hoch * bezweifle, dass das ist, was der Fehler sagt. Ich bin zu 100% sicher, dass es dir * wenigstens * eine Zeilennummer verraten und einen Stack-Trace zeigen wird. Ansonsten gibt es nicht genug Informationen für uns, um Ihnen zu helfen. Was ist die * genaue * Fehlermeldung? Welches Ergebnis erwartest du und warum? Was ist das gewünschte Verhalten und warum? Können Sie eine * genaue * Spezifikation dessen angeben, was Sie wollen, einschließlich aller Regeln, Ausnahmen von diesen Regeln, Eckfällen, Sonderfällen, Grenzfällen und Grenzfällen? ... –

+0

... Können Sie Beispieleingänge und -ausgänge bereitstellen, die sowohl im Normalfall als auch in allen Ausnahmen, Eckfällen, Sonderfällen, Grenzfällen und Randfällen zeigen, was Sie erwarten? Bitte stellen Sie auch eine [mcve] zur Verfügung. (Mit einem speziellen Fokus auf * minimal *: Ich bezweifle stark, dass es 100 Zeilen erfordert, um das Problem zu reproduzieren, tatsächlich, ich wette, Sie können das Problem in 2 kurzen Zeilen demonstrieren.) –

+0

Mein Fehler sagt, "auf meinem Weg wo Gem Prawn ist installiert: C:/Ruby24-64/.... in "method_missing": undefinierte lokale Variable oder Methode "print_list" für # ". – Alassar

Antwort

0

print_list ist eine Instanzmethode von List Klasse, und Sie nennen es auf self Objekt, das es eine Instanz von Generating. Es sollte sein:

+0

Danke, jetzt läuft mein Code, aber es hat die Methodenzeilen in der pdf-Datei nicht ausgedruckt. Es liegt keine Fehlermeldung vor, die PDF-Datei ist gerendert aber leer. – Alassar

+0

Wenn Sie ein anderes Problem haben, stellen Sie bitte eine andere Frage. Das Problem in dieser Frage ist gelöst, und die Faustregel der SO ist "eine Frage pro Problem". – mudasobwa

Verwandte Themen