J’arrive à récupérer le champ d’un input text avec <%= text_field_tag(:query) %> dans mon View et params[:query] dans mon Controller.
Par contre, lorsque je rentre un truc du genre “bbx iamstark” dans mon champ texte, ça me renvoie un String. Normal, c’est un champ texte. Mais je veux un Array avec toutes ses valeurs séparées par des espaces. Il me faudrait une regex pour faire ça, je me dis. En parcourant la doc de Ruby, je suis tombé sur la fonction qu’il me fallait : str.scan.
Exemple :
a = "cruel world" a.scan(/\w+/) #=> ["cruel", "world"]
Le String “cruel world” devient un Array où chaque mot est une entrée.
J’ai mis donc ça dans mon Controller :
@query = params[:query] @list = @query.scan(/\w+/)
Mon @query est le String “bbx iamstark” et @list devient un Array ['bbx', 'iamstark'].
Avec ça, je vais pouvoir boucler et récupérer les id pour mon app Twitter!
Flux RSS
T’as pas essayé avec un %w ? (il est possible qu’il ne fonctionne pas, notamment si ta @query retourne des guillemets, mais basiquement :
%w(bbx iamstark briice sphaxslayer)
=> ["bbx", "iamstark", "briice", "sphaxslayer"]
(enfin tant que ça marche !
c’était à titre informatif… ça sert pas mal le %w
)
En fait :
a = “cruel world”
%w(a)
=> ["a"]
ça ne marchera pas…
et si tu fais directement un
%w(params[:query])
tu retrouves dans le même cas, donc je pense pas que ça fonctionnerait, finalement …
ça te sortira surement un truc genre :
["params[:query]“]
…donc finalement, garde que le côté informatif de ma remarque
Si c’est uniquement pour séparer par des espaces, je vois pas trop l’intérêt d’une expression régulière. Un :
str = str.split(’ ‘)
Et le tour est joué
http://www.ruby-doc.org/core/classes/String.html#M000818
Ah ben oui tiens. Merci, je vais mettre ça.