Forum: Rails France Route par defaut et path_prefix

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Guillaume M. (Guest)
on 2008-10-09 18:42
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 :)

Bonne journée.
Michel B. (Guest)
on 2008-10-09 18:52
(Received via mailing list)
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/ActionControlle...

--
Michel B.
Guillaume M. (Guest)
on 2008-10-09 18:57
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/ActionControlle...
>
> --
> 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é
là :-)
Jean-François Trân (Guest)
on 2008-10-09 18:57
(Received via mailing list)
Le 9 octobre 2008 16:42, Guillaume M. a écrit :

> Celà m'embête quelque peu de virer la route par défaut :)

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_
Michel B. (Guest)
on 2008-10-09 19:06
(Received via mailing list)
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.
Guillaume M. (Guest)
on 2008-10-09 19:13
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 :-)

Merci de vos réponses :-)
Jean-François Trân (Guest)
on 2008-10-09 19:37
(Received via mailing list)
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 :-)

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_
Baptiste D. (Guest)
on 2008-10-09 19:45
(Received via mailing list)
Voila, comme conseillé dans les commentaires :-)

# 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
Guillaume M. (Guest)
on 2008-10-10 10:56
Merci à tous, sujet clos.

La conclusion étant de ne pas utiliser les routes par défaut.
This topic is locked and can not be replied to.