建议阅读示例项目的源代码,例如Beast和Bort,这是学习rails的好方法。但是我发现自己在阅读这些项目的源代码时迷失了,因为包含的插件可能会带来一些没有任何提示的奇怪代码,例如"require"
或"include"
。你能分享你的rails代码阅读体验吗?非常感谢。
答案 0 :(得分:4)
学习使用rails时,最重要的事情之一是它如何加载你编写的代码。假设您在app / controllers / demo / sub目录中有一个HelloController。如果您生成了此控制器,它将具有正确的名称Demo :: Sub :: HelloController。
当你的路线告诉rails寻找“demo / sub / hello”时,它被转换成控制器的全名(Demo :: Sub :: HelloController),它们试图调用它们。 Ruby无法找到这个类并调用const_missing,这使得rails将名称转换为文件,在本例中为demo / sub / hello_controller(:: = /,capitals而不是first = _,在下划线方法下查找Inflections)。然后Rails需要这个文件并检查正确的类定义。
Rails在ruby的加载路径(app / controllers,app / models,app / helpers,lib,vendor)中添加了几个目录,并且这些目录中的demo / sub / hello_controller.rb将满足require。但是不在应用程序/控制器中的控制器需要特别注意那些视图。
此外,这适用于命名空间,只有它会查找目录。因此,引用Demo :: Sub将查找demo / sub目录。这允许你放弃类的标准定义,所以你可以做
class Demo::Sub::HelloController < ActionController::Base
end
而不是
module Demo
module Sub
class HelloController < ActionController::Base
end
end
end
答案 1 :(得分:0)
Rails代码主要是ruby代码。掌握红宝石,你在阅读轨道代码时都没有问题。 祝你好运。
答案 2 :(得分:0)