两个不同目录中的控制器名称相同

来自’使用Rails 4的敏捷Web开发’第272页。

如果传入的请求有一个名为(例如)admin / book的控制器,Rails将在app / controllers / admin目录中查找名为book_controller的控制器。 也就是说,控制器名称的最后部分将始终解析为名为name_controller.rb的文件,并且任何前导路径信息将用于从app / controllers目录开始浏览子目录。

想象一下,我们的程序有两个这样的控制器组(比如,admin / xxx和content / xxx),并且两个组都定义了一个书籍控制器。 在app / controllers的admin和content子目录中都有一个名为book_controller.rb的文件。 这两个控制器文件都将定义一个名为BookController的类。 如果Rails没有采取进一步措施,这两个类就会发生冲突。 为了解决这个问题,Rails假定目录app / controllers的子目录中的控制器位于以子目录命名的Ruby模块中。

我的问题是:两个book_controller.rb文件怎么会发生冲突?
我有两个不同的URL:…. / admin / book和…. / content / book,它们怎么会发生冲突? 在前一段中明确指出

[..]任何前导路径信息将用于从app / controllers目录开始浏览子目录

文件名无关紧要。 什么是常数名称。

拥有两个名称相同的文件是完全可以的,例如controllers/admin/books_controller.rbcontrollers/books_controller.rb

但是,这些控制器内的类名应该不同。 您可以添加命名空间来区分它们。 例如

 class Admin::BooksController class BooksController 

想象一下像这样的文件路径

../app/controllers/admin/book_controller.rb

&&

../app/controllers/content/book_controller.rb

Rails使用约定优于配置: http : //en.wikipedia.org/wiki/Convention_over_configuration

就像它在最后一段中所述

如果Rails没有采取进一步措施,这两个类就会发生冲突。 为了解决这个问题,Rails假定目录app / controllers的子目录中的控制器位于以子目录命名的Ruby模块中。

有人请纠正我,如果我错了,但rails会寻找名为admin.rb和content.rb的模型