2017-08-22 5 views
-1

J'essaie de démarrer le programme où je ne peux pas lire dans un fichier csv et il imprime les données sur un fichier pdf. Maintenant j'ai un problème. Heres mon code:Mauvaise méthode de crevette ou mauvais objet?

------------------------------------ 
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 
--------------------------------------------- 

Quand je crée maintenant une nouvelle génération de l'objet:

gen = Generating.new 

alors il échoue le programm ensemble parce que l'erreur dit méthode Unknow (print_list). Suis-je soumettre le mauvais objet pour la méthode (liste_impression), ou utilise les méthodes de sortie de texte de la crevette mal?

+0

"l'erreur indique la méthode unknow (print_list)" - Je * fortement * doute que c'est ce que l'erreur dit. Je suis certain à 100% qu'il va * au moins * vous indiquer un numéro de ligne et afficher une trace de pile. Sans cela, il n'y a pas assez d'informations pour que nous puissions vous aider. Quel est le message d'erreur * precise *? Quel résultat attendez-vous et pourquoi? Quel est le comportement désiré et pourquoi? Pouvez-vous fournir une spécification * précise * de ce que vous voulez faire, y compris toutes les règles, les exceptions de ces règles, les cas de coin, les cas spéciaux, les cas limites et les cas de bordure? ... –

+0

... Pouvez-vous fournir des exemples d'entrées et de sorties démontrant ce que vous attendez, à la fois dans des cas normaux et dans toutes les exceptions, les cas d'angle, les cas spéciaux, les cas limites et les cas limites? S'il vous plaît, fournissez également un [mcve]. (Avec un accent particulier sur * minimal *: je doute fortement qu'il nécessite 100 lignes pour reproduire le problème, en fait, je parie, vous pouvez démontrer le problème en 2 lignes courtes.) –

+0

Mon erreur dit, "sur mon chemin où le Gem Prawn est installé: C:/Ruby24-64/.... dans "method_missing": variable locale undefinde ou méthode "print_list" pour # ". – Alassar

Répondre

0

print_list est une méthode d'instance de List classe, et vous l'appelez sur l'objet self, ce qui est là une instance de Generating. Il devrait être:

liste1 = Listen.new("Friendslist") 
liste1.load_friend("test.csv") 
#⇓⇓⇓⇓⇓⇓ 
liste1.print_list 
+0

Merci, maintenant mon code fonctionne, mais il n'a pas imprimé les lignes de la méthode dans le fichier pdf. Il n'y a pas de message d'erreur, le pdf-fichier est rendu mais vide. – Alassar

+0

Si vous avez un autre problème, postez une autre question. Le problème énoncé dans cette question est résolu, et la règle empirique de l'ER est «une question par problème». – mudasobwa