TechAcademy Webアプリケーションコース(20日目)

Rails 今までの復習・まとめ
今までのメッセージボード作成の流れを簡略化してみた。

Rails
Webアプリケーションフレームワーク
Webアプリケーションを作成するときの土台

MVC
Model・View・Controller の流れ・役割分担(Router も重要)
URLとHTTPメソッドを受け取って Controller に渡すのが、Router(ルータ)
リソース(データ)として振る舞うのが、Model(モデル)
Model を表示・整形する雛形が、View(ビュー)。多くの場合 HTML
Model や View を制御するのが、Controller(コントローラ)

メッセージボード作成 メッセージに関係した4つのページを作成する。
 メッセージ一覧ページ(トップページ)
 メッセージ新規作成ページ
 メッセージ詳細ページ
 メッセージ編集ページ

・Railsインストール

・Bundler ライブラリの管理ツール
・Gemfile Bundler で管理するライブラリ一覧

・ファイル一覧(よく使うもの)
app/ アプリケーションのメインフォルダ(後に説明するコントローラ、モデル、ビューなど)
app/assets/ 
app/controllers/
app/helpers/
app/models/
app/views/

config/ アプリケーション本体、ルーティングなどの設定情報
config/database.yml
config/routes.rb

データベース本体やスキーマ(データベースの構造)情報、マイグレーションファイルなど
db/

必要なgemライブラリを定義
Gemfile

・Git バージョン管理もしていく。

・サーバの起動 $ rails s
・MySQLサーバの起動 $ sudo service mysqld start
・データベースの作成 $ rails db:create

・Model
Modelを作成 $ rails g model Message content:string

マイグレーションファイル
Rails からデータベースのテーブルを管理するためのファイル
マイグレーションの実行 $ rails db:migrate

ActiveRecord
Model 全般の操作を担うライブラリ。
Rails アプリとデータベースの連携を担う。

Git
$ git status ワークツリーとインデックスの状況を確認
$ git diff 前回のコミットとの差分を確認する
$ git add . ステージする(ワークツリー→インデックス)
$ git commit -m 'message model' コミットする(インデックス→ローカルリポジトリ)
git logで確認できる。

・Router
CRUD に対応する HTTP リクエストのメソッド
GET (Read)・POST (Create)・PUT (Update)・DELETE (Delete)
これに対応するルーティングを書く。

CRUDのための残り3つの補助ページ
詳細ページ(show)にアクセスするには、一覧ページ(index)が必要
保存アクション(create)にデータを送るには、新規作成用のフォームページ(new)が必要
更新アクション(update)にデータを送るには、更新用のフォームページ(edit)が必要

Rails.application.routes.draw do
 root to: 'messages#index'
 resources :messages
end

config/routes.rb  7つの基本ルーティングの省略形

・Controller と View
Controller と View は密接に関わるので、同時に開発する。

Controller の生成
$ rails g controller コントローラ名(モデルの複数形)
config/routes.rb で設定したルーティングに対応したアクションを messages_controller.rb に追加する。

View の構成について
GET のルーティングである index, show, new, edit に対応する View を作成
共通部の抜き出し app/views/laytous/application.html.erb ファイル(既にある)


・7つのルーティングに対するレスポンスの実装
 Controller と View を開発

messages#index
app/controllers/messages_controller.rb の index アクション
app/views/messages/index.html.erb index アクションに対応する View

messages#show
app/controllers/messages_controller.rb の show アクション
app/views/messages/show.html.erb show アクションに対応する View
app/views/messages/index.html.erb index から show へのリンクを追加する

messages#new
app/controllers/messages_controller.rb の new アクション
app/views/messages/new.html.erb new アクションに対応する View
app/views/messages/index.html.erb index から new へのリンクを追加する

messages#create
app/controllers/messages_controller.rb の create アクション
View は不要。保存に成功 show.html.erb , 失敗 new.html.erb が表示。
app/views/messages/show.html.erb show から index に戻るリンクを追加

フラッシュメッセージ(flash)表示・ファイル作成編集
app/views/layouts/_flash_messages.html.erb
app/views/layouts/application.html.erb の body

messages#edit (既存のメッセージレコードを編集)
app/controllers/messages_controller.rb の edit アクション
app/views/messages/edit.html.erb edit アクションに対応する View
app/views/messages/show.html.erb show から edit へのリンクを追加する

messages#update
app/controllers/messages_controller.rb の update アクション
リダイレクトしているのでView は不要。
更新に成功すれば show.html.erb が、失敗すれば edit.html.erb が表示。

messages#destroy
app/controllers/messages_controller.rb の destroy アクション
リダイレクトしているので View は不要。
app/views/messages/show.html.erb  show.html.erb に削除リンクを設置

これで簡易的なメッセージボードを作成できた。

Git
$ git status ワークツリーとインデックスの状況を確認
$ git diff 前回のコミットとの差分を確認する
$ git add . ステージする(ワークツリー→インデックス)
$ git commit -m 'message model' コミットする(インデックス→ローカルリポジトリ)
git log で確認できる。


明日からは課題である タスクリスト の作成に取り組みたい。

この記事が気に入ったらサポートをしてみませんか?