【发布时间】:2010-08-17 13:34:11
【问题描述】:
我有以下路线。
pota.resources :on_k,
:as => ':klass',
:path_prefix => 'pota/klass',
:controller => 'main'
当我做 rake 路由时,这就是我得到的 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 中遇到路线错误。
我猜那是因为我在 value 中有 '/' 。我可以通过使用正则表达式来解决这个问题,但我也可能会传递未嵌套的 :klass。
在像 Vehicle::Car 这样的类上我做
Vehicle::Car.underscore #=> vehicle/car
"vehicle/car".camelize.constantize #=> Vehicle::Car
另一边的下划线和驼峰化/常量化使得传递嵌套类名更容易。
知道如何为 rails3 修复它吗?
【问题讨论】:
标签: ruby-on-rails