#1 Mon 19 November 2018 19:45
- Benji12
- Participant occasionnel
- Date d'inscription: 5 Apr 2018
- Messages: 23
Method dans rails
j’ai un petit souci avec une method et une simple requête Postgis (qui fonctionne bien dans pgadmin) :
Code:
def track_start_point(linestring) start_point = <<-SQL select ST_AsText(ST_StartPoint('#{linestring}')) SQL Track.connection.execute(start_point) end
Me retourne “wrong number of arguments (given 0, expected 1)” pourtant si je fais un raise, ma “linestring” est bien passée en argument...
Si je met la variable linetsring entre double quotes, ça me retourne :
ERROR: column “LINESTRING(743238 2967416,743238 2967450)” does not exist
LINE 2: ST_AsText(“LINESTRING(743238 2967416,743238 2967450)
Hors ligne
#2 Mon 19 November 2018 20:17
- sam92
- Juste Inscrit !
- Date d'inscription: 6 Nov 2018
- Messages: 7
Re: Method dans rails
Bonsoir,
La variable linestring présente est une chaîne de caractères, elle doit être convertie en un objet géométrique pour être acceptée par la fonction ST_StartPoint.
La fonction suivante vous permettra d'effectuer la conversion : http://postgis.net/docs/ST_GeomFromText.html
Sam
Hors ligne
#3 Mon 19 November 2018 20:40
- Benji12
- Participant occasionnel
- Date d'inscription: 5 Apr 2018
- Messages: 23
Re: Method dans rails
Merci Sam pour ton aide,
Avce PgAdmin, la requête fonctionne très bien sans, je viens d'essayer avec et maintenant j'ai une syntax error :
(ST_StartPoint(ST_GeomFromText(LINESTRING(743238 2967416,74....
La linestring devrait être entre quote, si je rajoute des quotes, la linestring ne passe plus en argument:(
Hors ligne
#4 Mon 19 November 2018 21:24
- sam92
- Juste Inscrit !
- Date d'inscription: 6 Nov 2018
- Messages: 7
Re: Method dans rails
Je crois comprendre maintenant d'où vient le souci, c'est parce qu'il faut mettre l'expression LINESTRING(...) entre apostrophes, et non entre guillemets.
A mon avis, c'est ça
Code:
ST_AsText(ST_StartPoint('#{linestring}'::geometry))
Ou
Code:
ST_AsText(ST_StartPoint(ST_GeomFromText('#{linestring}')))
Dernière modification par sam92 (Mon 19 November 2018 21:34)
Hors ligne
#5 Mon 19 November 2018 23:52
- Benji12
- Participant occasionnel
- Date d'inscription: 5 Apr 2018
- Messages: 23
Re: Method dans rails
Oui le problème vient bien de là,
mais si je met :
Code:
ST_AsText(ST_StartPoint('#{linestring}'::geometry))
Ca ne passe plus en argument : wrong number of arguments (given 0, expected 1)
et si je met :
Code:
ST_AsText(ST_StartPoint(ST_GeomFromText('#{linestring}')))
J'ai un syntax error at or near "ST_AsText"
Hors ligne
#6 Tue 20 November 2018 07:55
- sam92
- Juste Inscrit !
- Date d'inscription: 6 Nov 2018
- Messages: 7
Re: Method dans rails
"wrong number of arguments (given 0, expected 1)"
Ce log d'erreur est propre au langage Ruby, il y a quelque part (en dehors du bloc SQL) un défaut de déclaration/d'initialisation du paramètre d'une fonction.
Mais je ne peux pas t'aider, c'est hors de mes compétences.
Bon courage !
Sam
Hors ligne