删除控制器时不会删除路由

Routes are not deleted while deleting the controller

当我删除一个控制器时,我注意到相应的路由没有从 routes.rb 文件中删除。 rails有什么理由不删吗?

Rails 不会编辑您的文件,除非您调用命令来这样做(即 rails generate ...

因此,当您使用 rm app/controller/foos_controller.rb 从硬盘删除文件时,没有任何进程可以编辑您的 routes.rb 文件。

属于那个控制器routes不会被删除当你给rails d controller Posts因为当命令 rails g controller Posts name:string user:references 为 运行 时,它们不会被创建。由 rails g controller Posts name:string user:references 生成的内容仅在您提供 rails d controller Posts

时被删除

例如,命令rails g controller nurseries创建以下文件

  create  app/controllers/nurseries_controller.rb
  invoke  erb
  create    app/views/nurseries
  invoke  test_unit
  create    test/controllers/nurseries_controller_test.rb
  invoke  helper
  create    app/helpers/nurseries_helper.rb
  invoke    test_unit
  create      test/helpers/nurseries_helper_test.rb
  invoke  assets
  invoke    coffee
  create      app/assets/javascripts/nurseries.js.coffee
  invoke    scss
  create      app/assets/stylesheets/nurseries.css.scss

现在当你给rails destroy controller nurseries命令时创建的内容只会被删除

  remove  app/controllers/nurseries_controller.rb
  invoke  erb
  remove    app/views/nurseries
  invoke  test_unit
  remove    test/controllers/nurseries_controller_test.rb
  invoke  helper
  remove    app/helpers/nurseries_helper.rb
  invoke    test_unit
  remove      test/helpers/nurseries_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/nurseries.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/nurseries.css.scss

可能你应该手动擦除 routes 或者如果你是在 [=33 的帮助下生成控制器=]scaffoldrails g scaffold Posts name:string user:references 然后给 rails d scaffold Posts 会为你做,但它也会删除所有其他内容(模型,迁移文件等)以及它。