Mais je ne peut faire ainsi! Etant donné que tout ce qui m'est retourné de la bdd est en String! c'est justement séparé x et y que je cherches à faire! Sinon je n'utiliserais pas de composition iffle:
Quoi qu'il en soit. J'ai fait quelque test et ça bloque au niveau des assignations:
(La fonction where_to_live! permet de définir la position de la cité sur la carte à sa création d'après mon fameux (pas tant que ça ,P) script de spirale carré. La fonction renvoi un objet de type Point. La fonction fonctionnes(wow), puisque comme on peut le voir dans le message d'erreur, les variables sont bien rempli par le retour de cette fonction).
Edit: Après réflection je me suis dis que j'aurais peut-être besoin un jour d'instancier un objet Point avec x et y (par exemple lorsque c'est moi qui définirais les coordonnées). J'ai donc amélioré mon petit bout de code, voici ma class actuellement fonctionnelle:
Edit²: Ok, erreur résolu:
Maintenant erreur à l'affichage dans les vues:
can't convert Symbol into Integer
ça approches... en espérant que ce soit la dernière --'
Edit³: Ok, j'ai trouvé le problème, si je fait:
Merci.
Quoi qu'il en soit. J'ai fait quelque test et ça bloque au niveau des assignations:
@city.position = City.where_to_live!
Me renvoi l'erreur: undefined method `point' for #<Point:0xb48992c @x=7, @y=2>(La fonction where_to_live! permet de définir la position de la cité sur la carte à sa création d'après mon fameux (pas tant que ça ,P) script de spirale carré. La fonction renvoi un objet de type Point. La fonction fonctionnes(wow), puisque comme on peut le voir dans le message d'erreur, les variables sont bien rempli par le retour de cette fonction).
Edit: Après réflection je me suis dis que j'aurais peut-être besoin un jour d'instancier un objet Point avec x et y (par exemple lorsque c'est moi qui définirais les coordonnées). J'ai donc amélioré mon petit bout de code, voici ma class actuellement fonctionnelle:
class Point
attr_reader :x, :y
def initialize(args)
if args[tring]
string = args[tring]
parts = string[1..-2].split(",");
@x = parts[0].to_i
@y = parts[1].to_i
elsif args[:x] && args[:y]
@x = args[:x]
@y = args[:y]
end
end
def ==(other_point)
x == other_point.x && y == other_point.y
end
end
Edit²: Ok, erreur résolu:
def point
"(#{x},#{y})"
end
Pas pigé mais fonctionnel.. o.0 Si quelqu'un comprends le pourquoi du comment...Maintenant erreur à l'affichage dans les vues:
can't convert Symbol into Integer
ça approches... en espérant que ce soit la dernière --'
Edit³: Ok, j'ai trouvé le problème, si je fait:
def initialize(db_record)
string = db_record
parts = string[1..-2].split(",");
@x = parts[0].to_i
@y = parts[1].to_i
end
ça fonctionnes dans la vue, probablement PgSQL qui appelles cette méthode avec la valeur du champs position. Demain je ferais un mix des deux méthodes, et je penses que ce seras bon.Merci.