У меня есть следующие маршруты.
pota.resources :on_k,
:as => ':klass',
:path_prefix => 'pota/klass',
:controller => 'main'
Когда я делаю рейк-маршруты, я получаю метод show:
pota_on_k GET /pota/klass/:klass/:id(.:format)
{:action=>"show", :controller=>"pota/main"}
Приведенный выше код отлично работает в rails 2.x.Однако, если я использую rails3, я получаю следующую ошибку
ActionController::RoutingError: No route matches
{:action=>"show", :controller=>"pota/main", :klass=>"vehicle/door", :id=>1}
Обратите внимание, что я передаю «средство передвижения / дверь» как: klass.Если я передаю стандартную модель, например: klass => 'pet', то она работает нормально.Однако, если я передаю имя вложенной модели, например: klass => «vehicle / door», тогда я получаю ошибку маршрута в rails3.
Я думаю, это потому, что в значении есть «/».Я могу решить это с помощью регулярного выражения, но я также могу передать: klass, который не является вложенным.
В классе, таком как Vehicle :: Car, который я делаю
Vehicle::Car.underscore #=> vehicle/car
"vehicle/car".camelize.constantize #=> Vehicle::Car
Это подчеркивание и верблюд /константирование с другой стороны облегчает передачу имени вложенного класса.
Есть идеи о том, как исправить это для rails3?