Rails 路线:资源的单数错误
Rails routes: Wrong singular for resources
我的 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 intern route helpers 清楚地解决。
那么,我做错了什么?
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
我的 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 intern route helpers 清楚地解决。
那么,我做错了什么?
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