Rails路线:资源错误单数
我在routes.rb
有以下行(Rails 4.1.4):
resources :request_caches
但是,当我运行rake routes
我得到以下输出:
request_caches GET /request_caches(.:format) request_caches#index POST /request_caches(.:format) request_caches#create new_request_cach GET /request_caches/new(.:format) request_caches#new edit_request_cach GET /request_caches/:id/edit(.:format) request_caches#edit request_cach GET /request_caches/:id(.:format) request_caches#show PATCH /request_caches/:id(.:format) request_caches#update PUT /request_caches/:id(.:format) request_caches#update DELETE /request_caches/:id(.:format) request_caches#destroy
如您所见,Rails以某种方式将request_caches
复数映射到request_cach
单数。 但它应该是request_cache
。 这是一种特殊情况,因为caches
这个词? 我也玩过
resources :request_caches, as: :request_cache
但这导致了错误的路由,如request_cache_index
。 此外,我认为这是一项标准任务,应该使用Rails实习生路线助手清楚地解决。
那么,我做错了什么?
Rails猜测。 这不完美。 在config/initializers/inflections.rb
添加
ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.irregular 'request_cache', 'request_caches' end
您需要在初始化程序中重新启动服务器。
看看config/initializers/inflections.rb
。 评论中应该有一些例子。
像这样的东西应该做的伎俩:
ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.singular 'request_caches' 'request_cache' end
确保在更改初始化程序后重新启动服务器。
正如我所说,您可以通过更改config/initializers/inflections.rb
来实现它,如下所示
ActiveSupport::Inflector.inflections(:en) do |inflect| inflect.irregular 'request_cache', 'request_caches' end