2010-01-21 4 views
2

J'utilise des routes nommées dans mon code ruby. Je viens du monde php où vous passerez l'information en utilisant $_GET et $_POST. Je me demandais s'il y a un moyen de mettre cela dans le routes.rb comme ceci:? dans routes.rb avec map.with_options ruby ​​

map.with_options :controller => 'test' do |m| 
    m.someurl 'someurl?search=someterm', :action => 'index' 
end 

Actuellement, il est de retour can't convert Hash into String. Merci!

Justin

Répondre

3

Si vous voulez simplement utiliser une chaîne de requête, vous n'avez pas besoin de dire votre itinéraire du tout. L'objet params contiendra tous les paramètres transmis.

map.with_options :controller => 'test' do |m| 
    m.some_url 'someurl', :action => 'index' 
end 

Ensuite, lorsque vous utilisez la méthode d'assistance:

some_url_path (: search => "someterm")

Créera la valeur de chaîne de requête pour vous.

Cependant, si vous voulez passer un paramètre à un contrôleur, vous pouvez les lier à votre itinéraire:

map.connect ':controller/:action/:id/:search' 

Dans votre contrôleur, vous pouvez accéder:

params[:search] 

Dans votre cas cela par être quelque chose comme:

map.with_options :controller => 'test' do |m| 
    m.some_url 'someurl' :action => 'index' 
end 

Le Rails Routing Guide offre un excellent ov vue d'ensemble sur le sujet.

Questions connexes