From 3540579a0bd5e66047d585f77233917bd6874562 Mon Sep 17 00:00:00 2001 From: Jeff Cohen Date: Mon, 23 May 2011 21:09:05 -0500 Subject: Update the MVC explanation in the main README.rdoc file --- README.rdoc | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) (limited to 'README.rdoc') diff --git a/README.rdoc b/README.rdoc index c5499ae8ef..b562a20a6f 100644 --- a/README.rdoc +++ b/README.rdoc @@ -1,30 +1,35 @@ == Welcome to Rails Rails is a web-application framework that includes everything needed to create -database-backed web applications according to the Model-View-Control pattern. - -This pattern splits the view (also called the presentation) into "dumb" -templates that are primarily responsible for inserting pre-built data in between -HTML tags. The model contains the "smart" domain objects (such as Account, -Product, Person, Post) that holds all the business logic and knows how to -persist themselves to a database. The controller handles the incoming requests -(such as Save New Account, Update Product, Show Post) by manipulating the model -and directing data to the view. - -In Rails, the model is handled by what's called an object-relational mapping -layer entitled Active Record. This layer allows you to present the data from -database rows as objects and embellish these data objects with business logic -methods. You can read more about Active Record in its +database-backed web applications according to the Model-View-Controller pattern. + +Understanding the MVC pattern is key to understanding Rails. MVC divides your application +into three layers, each with a specific responsibility. + +The View layer is composed of "templates" that are responsible for providing +appropriate representations of your application's resources. Templates +can come in a variety of formats, but most view templates are HTML with embedded Ruby +code (.erb files). + +The Model layer represents your domain model (such as Account, Product, Person, Post) +and encapsulates the business logic that is specific to your application. In Rails, +database-backed model classes are derived from ActiveRecord::Base. ActiveRecord allows +you to present the data from database rows as objects and embellish these data objects +with business logic methods. Although most Rails models are backed by a database, models +can also be ordinary Ruby classes, or Ruby classes that implement a set of interfaces as +provided by the ActiveModel module. You can read more about Active Record in its {README}[link:files/activerecord/README_rdoc.html]. -The controller and view are handled by the Action Pack, which handles both -layers by its two parts: Action View and Action Controller. These two layers -are bundled in a single package due to their heavy interdependence. This is -unlike the relationship between the Active Record and Action Pack that is much -more separate. Each of these packages can be used independently outside of -Rails. You can read more about Action Pack in its -{README}[link:files/actionpack/README_rdoc.html]. +The Controller layer handles incoming requests HTTP requests (such as Save New Account, +Update Product, Show Post). Controllers are responsible for providing a suitable response +back to the client (usually a web browser, but possibly an JSON or XML API client, etc.). +Controllers manipulate models and render the appropriate view templates to generate the HTTP response. +In Rails, the Controller and View layers are handled together by Action Pack. +These two layers are bundled in a single package due to their heavy interdependence. +This is unlike the relationship between the Active Record and Action Pack which are +independent. Each of these packages can be used independently outside of Rails. You +can read more about Action Pack in its {README}[link:files/actionpack/README_rdoc.html]. == Getting Started -- cgit v1.2.3