mirror of https://github.com/rails/rails
Update the MVC explanation in the main README.rdoc file
This commit is contained in:
parent
dd6c3676af
commit
3540579a0b
43
README.rdoc
43
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.
|
||||
database-backed web applications according to the Model-View-Controller 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.
|
||||
Understanding the MVC pattern is key to understanding Rails. MVC divides your application
|
||||
into three layers, each with a specific responsibility.
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in New Issue