J'ai les routes suivantes.rails3 routes numéro
pota.resources :on_k,
:as => ':klass',
:path_prefix => 'pota/klass',
:controller => 'main'
Quand je fais des itinéraires de râteau ce que je reçois pour la méthode show:
pota_on_k GET /pota/klass/:klass/:id(.:format)
{:action=>"show", :controller=>"pota/main"}
code ci-dessus fonctionne très bien dans des rails 2.x. Cependant si j'utilise rails3 alors je reçois l'erreur suivante
ActionController::RoutingError: No route matches
{:action=>"show", :controller=>"pota/main", :klass=>"vehicle/door", :id=>1}
Notez que je passe 'véhicule/porte' comme: klass. Si je passe un modèle standard comme: klass => 'pet' alors ça marche bien. Cependant, si je passe un nom de modèle imbriqué comme: klass => 'vehicle/door', alors je reçois une erreur de route dans rails3.
Je suppose que c'est parce que j'ai '/' dans la valeur. Je peux résoudre cela en ayant une regex mais je pourrais aussi passer: klass qui n'est pas imbriqué.
Sur une classe comme véhicule :: Car je fais
Vehicle::Car.underscore #=> vehicle/car
"vehicle/car".camelize.constantize #=> Vehicle::Car
Ce trait de soulignement et camelize/constantize de l'autre côté le rend plus facile à passer le nom de classe imbriquée.
Une idée sur la façon de s'y prendre pour la fixation de rails3?