这里是Rails的初学者。
你能帮我了解一下我看到的大多数代码样本的最上面的理论吗?“ActiveRecord::Base”、“应用程序控制器”和“ActionController::Base”部分?
发布于 2013-01-08 00:58:47
ActiveRecord::Base、ApplicationController和ActionController::Base都是类。您需要创建一个实例--其中之一--以获得一个对象,但您永远不会这样做。相反,您将扩展它们以创建新的子类,然后创建这些类的实例。
我相信有一个用于视图的基类,但是您不应该在正常的用法中看到它。通常,您将创建视图模板,而不是查看类,因此您将不会在框架的该部分处理类。
发布于 2013-01-08 02:58:46
补充一下已经说过的话,因为它都是准确的。
我理解'class X< ActiveRecord::Base‘是在模型中创建一个对象&类ApplicationController < ActionController::Base’用于在Controller中创建一个对象.那么,在视图中创建对象是否有类似之处,仅仅是为了在MVC的所有三个组件上对其进行舍入呢?
这是正确的道路,但有一些语义上的差异。
class User < ActiveRecord::Base只是创建ActiveRecord::Base的一个子类。在您执行类似于User.create()的操作之前,您会得到该类的一个实例,这个实例有时可能被称为对象。
子类是具有父类的类的特殊单词。在ruby中,您可能记得类是Object类的所有子类,非常令人困惑。
此外,子类ActiveRecord::Base不应该被认为是在模型中创建对象。相反,将您的子类视为模型的描述(通常是希望存储的一些数据)。每个子类本身都是一个模型。它都是语义的,但它可以帮助您理解。
控制器也是如此。您不是在控制器中创建对象,而是创建一个全新的控制器描述。在实例化之前,这种描述并不是真正具体的,当您或用户从应用程序请求页面时,rails就会自动发生这种情况。
最后,确实有一个类可以完成名为ActionView::Base的三重奏。Rails通过在控制器中调用render自动创建它。
发布于 2013-01-08 01:04:44
ActiveRecord::Base,ActionController::Base,是基于MVC的类。但是,您可以在不扩展这些类的情况下创建模型或控制器,这样它们就不会具有类提供的特性。
但是,在视图中,通常没有人可以在视图中创建对象或模型。这可以确保增加代码的可读性和可维护性。它将显示更清晰的代码。此外,在像index.rb这样的特定视图中,它实际上是与控制器连接的,您可以在控制器中获得初始化的对象实例,并使用它在视图中显示数据。
https://stackoverflow.com/questions/14206580
复制相似问题