2010-10-08 8 views
0

Je rencontre quelques problèmes avec le routage Rails 3, et je n'arrive pas à comprendre pourquoi les choses ne fonctionnent pas.Rails 3 échecs de routage

Par exemple, j'ai un test fonctionnel qui comprend:

assert_routing("/store/users/[email protected]/license/ch7bHtrx", 
       {:controller => 'store/users', :action => 'license', :email => '[email protected]', :id => 'ch7bHtrx' }) 

qui produit

ActionController::RoutingError: No route matches {:controller=>"store/users", :email=>"[email protected]", :id=>"ch7bHtrx", :action=>"license"} 
/test/functional/store/users_controller_test.rb:32:in `test_should_get_license_download' 

qui est intéressant parce que cela fonctionne réellement dans la voie de la direction du contrôleur, routes.rb comprend

namespace :store do 
    controller :users do 
    get 'users/:email/license/:id' => :license, :email => VALID_EMAIL_REGEX_FOR_ROUTE, :as => :license_download 
    end 
end 

et rake routes produit

store_license_download GET /store/users/:email/license/:id(.:format) {:action=>"license", :controller=>"store/users", :email=>/([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~][email protected]((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)/i} 

Je suis un débutant Rails relatif, donc je ne me sens pas qualifié pour dire que la poussette de quelque chose, mais je ne peut tout simplement venir avec une explication qui râteau routes auraient les entrées, mais échouerait pour réellement acheminer de cette façon.

Toute aide serait grandement appréciée.

Édition: Suppression d'un exemple de problème qui a fini par être un bogue dans la forme_pour confondre le système de routage avec des informations conflictuelles.

Répondre

0

J'utilise généralement des routes de ressources, mais je pense que les règles sont les mêmes pour les anciens styles. Url vous mettre à l'intérieur du bloc sont ajoutés. Alors
namespace :store do
controller :users do
get 'action' => :action
end
end
devient '/ magasin/utilisateurs/action' mis en correspondance: action à l'intérieur users_controller.

+0

Ce n'est pas ce que dit le rake route, et le test fonctionne très bien pour le mapping de l'url à l'action. Si je supprime le préfixe '/ users', le mappage de l'URL vers l'action commence également à échouer. Donc, je ne pense pas que le mot clé 'controller' fonctionne de la même manière que 'resources' à cet égard. – bdrister