Strange Rails资源路由行为

Igo*_*lov 3 ruby-on-rails rails-routing

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

resource :watches
Run Code Online (Sandbox Code Playgroud)

制作这样奇怪的路由表:

        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
Run Code Online (Sandbox Code Playgroud)

因为你没有看到ID参数和混乱的动作

在同一时间:

resources :mibs
Run Code Online (Sandbox Code Playgroud)

制定正确的路线

           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
Run Code Online (Sandbox Code Playgroud)

我认为这可能是某种方式的变形问题,但尝试使用"火箭"而不是"手表"给出相同的结果:

        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
Run Code Online (Sandbox Code Playgroud)

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

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

Ver*_*cus 5

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

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

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