补充已经说过的话,因为它都是准确的。
我知道'class X < ActiveRecord::Base' 是在模型中创建一个对象,而'class ApplicationController < ActionController::Base' 是在控制器中创建一个对象......所以有没有类似的东西来创建一个对象在视图中,只是为了对 MVC 的所有三个组件进行四舍五入?
这是正确的道路,但存在一些语义差异。
class User < ActiveRecord::Base
仅创建 ActiveRecord::Base 的子类。在您执行类似的操作之前,您User.create()
是否获得了该类的实例,它有时可能被称为对象。
子类是具有父类的特殊词。在 ruby 中,您可能还记得类是 Object 类的所有子类,这非常令人困惑。
此外,不应将 ActiveRecord::Base 子类化为在模型中创建对象。相反,将您的子类视为对模型的描述(通常是您希望存储的一些数据)。 每个子类本身就是一个模型。这都是语义,但它可能有助于您的理解。
控制器也是如此。您不是在控制器中创建对象,而是在创建控制器的全新描述。在实例化之前,该描述并不是真正具体的,当您或用户从应用程序请求页面时,rails 会自动发生这种情况。
最后,确实有一个类来完善这三者,称为 ActionView::Base。render
Rails 通过调用你的控制器自动创建它。