Railsでプログラムを作り始める前に、Railsに持ち込まれているいくつかの概念を説明します。
MVC とは Model/View/Controller の略です。 MVCモデルでは、プログラムをモデル、ビュー、コントローラの3つに分けておくことで、処理の見通しがよくなります。 RailsでWebアプリケーションを作る場合、基本的にMVCに従ってプログラムを作成する必要があります。
注釈
RailsのMVCは、Viewから直接モデルのビジネスロジックやデータストアにアクセスすることが可能です。 この点が一般的なMVCアーキテクチャとは異なります。 このアーキテクチャをMVCと呼んでもよいかは議論の余地がありますが、RailsのMVCはこういうものだと理解してください。
ブログサイトを例として、RailsのMVCを具体的に説明します。 このサイトでは http://0.0.0.0:3000/articles にアクセスすると記事一覧を返します。
Railsでは以下4つのコードを作成する必要があります。
上記4つをRailsで記述すると次のようになります。
# config/routes.rb
Rails.application.routes.draw do
# /articles にアクセスすると
# articles_controllerのindexアクションに処理を渡す
resources :articles, only: [:index]
end
# app/models/article.rb
#
# == Schema Information
#
# Table name: articles
#
# id :bigint(8) not null, primary key
# title :string(255)
# description :text(65535)
# created_at :datetime not null
# updated_at :datetime not null
#
class Article < ApplicationRecord
end
# app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
def index
# Articleモデルは、はじめから all という DBのarticlesテーブルから全てのデータを取得するメソッドをもっています
@articles = Article.all
end
end
<h1>Articles#index</h1>
<table>
<thead>
<th>タイトル</th>
<th>作成日</th>
</thead>
<tbody>
<% @articles.each do |article| %>
<tr>
<td>
<%= article.title %>
</td>
<td>
<%= article.created_at %>
</td>
</tr>
<% end %>
</tbody>
</table>
ブラウザから http://0.0.0.0:3000/articles にアクセスした結果は次のようになります。
Railsでルーティング、コントローラを定義する前に、RESTについて理解しておく必要があります。 なぜなら、Railsは基本的にRESTの原則にしたがってコードを簡単に定義できるようにできているからです。
RESTの特徴は以下のとおりです。
RESTfulなルーティングでは、あるリソースをどのように操作するかを、URIやHTTPのメソッドで表現します。 HTTPメソッドは以下を利用します。
具体例をあげます。