Maper une requête avec des paramètres


#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


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


#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


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


#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


#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. removed_email_address@domain.invalid


#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. removed_email_address@domain.invalid