xinelo
January 20, 2009, 10:34pm
#1
Bonjour,
je cherche un moyen de maper une requête avec des paramètres:
http://localhost:3000/api/search?keyword=gaza/items/14
Dans mon routes.rb, j’ai
map.namespace :api do |api|
api.connect ‘search’, :controller => ‘search’, :action =>
‘index’
api.connect ‘search/items/:item_id’, :controller =>
‘search’, :action => ‘show’
end
Rails voit ça comme :keyword => “gaza/items/14” et me renvoie sur
l’index
Je pense que je pourrais faire ça comme ceci:
http://localhost:3000/api/search/items/14?keyword=gaza , mais je suis
attaché à la syntaxe précédente.
Est-ce que c’est possible de faire ça?
Merci
Manu
xinelo
January 21, 2009, 12:20am
#2
Le 20 janvier 2009 22:17, Manuel a écrit :
‘search’, :action => ‘show’
end
Rails voit ça comme :keyword => “gaza/items/14” et me renvoie sur
l’index
keyword=gaza/items/14 est la query string de ta requête et
ton butineur a dû échapper les / en %2F.
Du coup Rails a raison d’envoyer /api/search sur ton action index.
– Jean-François.
–
http://twitter.com/underflow_
xinelo
January 21, 2009, 1:09am
#3
Rails voit ça comme :keyword => “gaza/items/14” et me renvoie sur
l’index
keyword=gaza/items/14 est la query string de ta requête et
ton butineur a dû échapper les / en %2F.
Du coup Rails a raison d’envoyer /api/search sur ton action index.
oui, ça ressemble bien à une logique de browser, bon, je vais donc re-
échapper tout ça pour le repasser à ma route.
Merci!
Manu
xinelo
January 21, 2009, 1:15am
#4
Le 21 janvier 2009 01:09, Manuel a écrit :
Rails voit ça comme :keyword => “gaza/items/14” et me renvoie sur
l’index
keyword=gaza/items/14 est la query string de ta requête et
ton butineur a dû échapper les / en %2F.
Du coup Rails a raison d’envoyer /api/search sur ton action index.
oui, ça ressemble bien à une logique de browser,
C’est surtout une logique de RFC.
– Jean-François.
–
http://twitter.com/underflow_
xinelo
January 21, 2009, 10:23am
#5
j’ai essayé ça, mais le query string part dès le point
d’interrogation, de
http://localhost:3000/api/search?keyword=gaza/items/5
mouliné dans map.search ‘/api/search/items/:item_id’, :controller =>
‘search’, :action => ‘show’
j’obtiens Parameters: {“keyword”=>“gaza/items/5”}, ce qui est correct,
comme disait Jean-François.
A première vue il n’y a pas de moyen existant. Customiser les méthodes
de routage de la requête avec les regex m’a l’air d’être la solution
(utilisée par le routing de Rails). Par manque de temps, je vais pour
le moment me contenter de ce que Rails offre , soit
http://localhost:3000/api/search/items/5?keyword=gaza
Merci
xinelo
January 21, 2009, 9:31am
#6
Même si c’est pas beau je pense que :
map.search ‘/api/search/items/:item_id’, :controller => ‘search’,
:action => ‘show’
avant ta route imbriquée marche.
2009/1/20 Manuel S. [email protected]
xinelo
January 21, 2009, 10:35am
#7
Au lieu de travailler au niveau de la route, regard du coté de la
construction de ta requête ? Je pense que tu peux facilement la générer
pour
quelle ressemble à la route que tu souhaite, non ?
2009/1/21 Manuel S. [email protected]