【发布时间】:2016-04-13 20:40:43
【问题描述】:
我正在从 Rails 3.2 升级到 4.2.6,由于某种原因,一个模型突然发现它的 rails 生成的资源路径名全错了。所有其他模型的资源都运行良好。
routes.rb(注释掉所有其他路由以隔离故障模型)
Rails.application.routes.draw do
resources :signups
end
rails 3.2 rake 路由输出(应该是什么样子)
signups GET /signups(.:format) signups#index
POST /signups(.:format) signups#create
new_signup GET /signups/new(.:format) signups#new
edit_signup GET /signups/:id/edit(.:format) signups#edit
signup GET /signups/:id(.:format) signups#show
PUT /signups/:id(.:format) signups#update
DELETE /signups/:id(.:format) signups#destroy
rails 4.2.6 rake 路由输出
signups_index GET /signups(.:format) signups#index
POST /signups(.:format) signups#create
new_signups GET /signups/new(.:format) signups#new
edit_signups GET /signups/:id/edit(.:format) signups#edit
signups GET /signups/:id(.:format) signups#show
PATCH /signups/:id(.:format) signups#update
PUT /signups/:id(.:format) signups#update
DELETE /signups/:id(.:format) signups#destroy
知道是什么原因导致这个模型的路径名发生了变化吗?
【问题讨论】:
-
当您尝试访问这些路由时是否会抛出错误
-
你读过rails源代码吗?
-
我认为您的路由文件中还有其他内容,因为您的 rake 路由没有正常输出。你不应该有“signups_index”或“new_signups”。我会弄清楚的,因为“注册”作为一种需要任何特殊变形的资源并没有什么不寻常的。
-
我怀疑如果你查看你的路线,你会发现你有'signups/index',这就是为什么你的路线名称是“signups_index”,而不是“signups”。路线名称的其他偏差可能也是如此。把你的全部路线贴在这里,我们可以看看。
-
我在帖子中提到,我删除了除注册之外的所有其他路由以隔离它。
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4