Strange Rails资源路由行为

时间:2012-09-02 04:39:11

标签: ruby-on-rails rails-routing

我遇到了奇怪的错误。我不确定这是错误。但是我以前从未遇到过这种奇怪的行为。

resource :watches

制作如此奇怪的路由表:

        watches POST   /watches(.:format)                         watches#create
    new_watches GET    /watches/new(.:format)                     watches#new
   edit_watches GET    /watches/edit(.:format)                    watches#edit
                GET    /watches(.:format)                         watches#show
                PUT    /watches(.:format)                         watches#update
                DELETE /watches(.:format)                         watches#destroy

如您所见无ID参数和混乱动作

同时:

resources :mibs

制作正确的路线

           mibs GET    /mibs(.:format)                            mibs#index
                POST   /mibs(.:format)                            mibs#create
        new_mib GET    /mibs/new(.:format)                        mibs#new
       edit_mib GET    /mibs/:id/edit(.:format)                   mibs#edit
            mib GET    /mibs/:id(.:format)                        mibs#show
                PUT    /mibs/:id(.:format)                        mibs#update
                DELETE /mibs/:id(.:format)                        mibs#destroy

我认为这可能是某种程度上的变形问题,但尝试使用“火箭”代替“手表”会产生同样的结果:

        rockets POST   /rockets(.:format)                         rockets#create
    new_rockets GET    /rockets/new(.:format)                     rockets#new
   edit_rockets GET    /rockets/edit(.:format)                    rockets#edit
                GET    /rockets(.:format)                         rockets#show
                PUT    /rockets(.:format)                         rockets#update
                DELETE /rockets(.:format)                         rockets#destroy

除了我的前两个资源(服务器和mib)之外的任何东西都会产生这样的结果。

可能在某处损坏了路由缓存?

1 个答案:

答案 0 :(得分:5)

resource表示单例资源:换句话说,您告诉Rails每个用户只有一个监视,因此传递ID将毫无用处。

resources是获取附加了ID的路由的标准调用。

所以,基本上,问题是变形问题,但对于resourceresources,不是路由的名称。有关更多信息,请查看Ruby on Rails routing guide。它很好地解释了单身人士资源与更常见的资源之间的区别。