2010-10-18 9 views
0

Pourquoi dans Rails 3 devez-vous décommenter match ':controller(/:action(/:id(.:format)))' (comme vu dans ce Hello World article) pour que la méthode d'index du contrôleur hello soit appelée quand vous allez à http://localhost:3000/hello? Quelqu'un peut-il expliquer pourquoi nous devons faire cela dans Rails 3 mais pas Rails 2, et est-ce une chose normale pour Rails 3 ou est-ce une sorte de hack?Rails 3 Routage Question

Répondre

4

Cette correspondance particulière est en quelque sorte un fourre-tout pour toutes les demandes qui n'ont pas déjà été définies.

Idéalement, vous devriez utiliser Resource Routing, mais ce dernier existe toujours en tant que support hérité. Il est mis en commentaire par défaut car Rails suppose que si un utilisateur tente d'accéder à un itinéraire que vous n'avez pas explicitement défini, il devrait provoquer une erreur 404 au lieu d'une erreur 500, ce qui arriverait si j'essayais de Accédez à http://localhost:3000/hello avec cette option activée, car il n'y a pas de contrôleur 'bonjour'.

+0

Existe-t-il un danger ou un trou de sécurité de quelque sorte que ce soit l'itinéraire hérité attrape-tout? – Nitrodist