Route par defaut et path_prefix


#1

Bonjour,

J’ai un petit problème avec mon routes.rb.

Le fichier ressemble à ça :

map.resources :manufacturers, :path_prefix => “settings”

Install the default routes as the lowest priority.

Note: These default routes make all actions in every controller

accessible via GET requests. You should

consider removing the them or commenting them out if you’re using

named routes and resources.
map.connect ‘:controller/:action/:id’
map.connect ‘:controller/:action/:id.:format’

En fait, je veux que mes vues/controller manufacturer soit accessible
uniquement via “/settings/manufacturers”

Or, le peth_prefix marche bien mais quand je tape l’url
“/manufacturers”, celà marche aussi car il prend probablement la route
par défaut.

Comment faire pour que mes vues du controller “manufacturer” ne soit
accessible qu’Ã travers l’url “/settings/manufacturer” et non
“/manufacturer”.

Celà m’embête quelque peu de virer la route par défaut :slight_smile:

Bonne journée.


#2

Je ne suis pas tout à fait sûr d’avoir compris quel est ton problème
précisément, mais ça me semble un bon moment pour utiliser un namespace
(que
tu pourrais par exemple appeller “settings”) :
http://api.rubyonrails.org/classes/ActionController/Routing/RouteSet/Mapper.html#M000736


Michel B.


#3

Michel B. wrote:

Je ne suis pas tout à fait sûr d’avoir compris quel est ton problème
précisément, mais ça me semble un bon moment pour utiliser un namespace
(que
tu pourrais par exemple appeller “settings”) :
http://api.rubyonrails.org/classes/ActionController/Routing/RouteSet/Mapper.html#M000736


Michel B.

Mon probleme est qu’avec un path_prefix (nommé settings ici), j’accede Ã
mon index de controller “manufacturer” par deux moyens :

1/ “settings/manufacturers/index”
2/ “manufacturers/index”

et je pense que la route par défaut prend le pas dans le cas 2 et c’est
pour ceci que l’url marche.

J’avais bien pensé à un namespace, mais cela m’oblige à renommer tous
mes : manufacturer_path en settings_manufacturer_path.

C’est pas la mort mais je pensais justement pouvoir m’affranchir d’un
namespace en utilisant le path_prefix. Peut-être que mon erreur aura été
:slight_smile:


#4

Le 9 octobre 2008 16:42, Guillaume M. a écrit :

Celà m’embête quelque peu de virer la route par défaut :slight_smile:

Ce qui est une très bonne décision à mon sens.

– Jean-François.


Les 50 ans du Lisp : http://www.lisp50.org

http://twitter.com/underflow_


#5

Michel B. wrote:

Ok, je vois.

Ce que je ne comprend pas, c’est ce que tu pense gagner à interdire
l’accès
par /manufacturers/ du coup.


Michel B.

Juste que les utilisateurs potentiels ne puissent pas attaquer mon
controller “manufacturer” par deux urls.

Encore une fois c’est pas la mort, mais je pensais que le path_prefix
limitait justement la route par défaut pour n’utiliser que l’url avec
prefix.

Je vais aller repotasser le truc car du coup je ne vois plus trop
l’interet du path_prefix :slight_smile:

Merci de vos réponses :slight_smile:


#6

Le 9 octobre 2008 17:13, Guillaume M. a écrit :

Juste que les utilisateurs potentiels ne puissent pas attaquer mon
controller “manufacturer” par deux urls.

Encore une fois c’est pas la mort, mais je pensais que le path_prefix
limitait justement la route par défaut pour n’utiliser que l’url avec
prefix.

Je vais aller repotasser le truc car du coup je ne vois plus trop
l’interet du path_prefix :slight_smile:

Mais ton diagnostic premier est bon.

GET /settings/manufacturers

est intercepté par un des routes définies par :

map.resources :manufacturers, :path_prefix => “settings”

Quand tu as un GET /manufacturers, ça commence pas par /settings
donc ça a peu de chance de se faire intercepté par une des routes
définies par le map.resources de ci-dessus.

puis Rails va vérifier si la route GET ‘:controller/:action/:id’
matche GET /manufacturers, ce qui est le cas
et c’est donc ManufacturersController#index qui va gérer l’affaire.

Donc si tu dégages la route par défaut, GET /manufacturers
ne se fera pas matché, c’est ce que tu veux.

It’s simple as that.

– Jean-François.

Ce n’est pas tant l’option :path_prefix qui limite la route par
défaut, c’est que ça modifie les routes restful de telle sorte
que le bébé est refilé à la route par défaut.

Ce qui tombe bien, comme je viens de l’écrire, virer la route
par défaut c’est une bonne chose.

– Jean-François.


Les 50 ans du Lisp : http://www.lisp50.org

http://twitter.com/underflow_


#7

Ok, je vois.

Ce que je ne comprend pas, c’est ce que tu pense gagner à interdire
l’accès
par /manufacturers/ du coup.


Michel B.


#8

Voila, comme conseillé dans les commentaires :slight_smile:

You should consider removing them or commenting them out if you’re

using
named routes and resources.

Baptiste qui avait mal compris le premier post de Jean-Francois.

2008/10/9 Jean-François Trân removed_email_address@domain.invalid:

Je vais aller repotasser le truc car du coup je ne vois plus trop
Quand tu as un GET /manufacturers, ça commence pas par /settings
It’s simple as that.
– Jean-François.


Les 50 ans du Lisp : http://www.lisp50.org

http://twitter.com/underflow_


Baptiste


#9

Merci à tous, sujet clos.

La conclusion étant de ne pas utiliser les routes par défaut.