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 で確認できる。
明日からは課題である タスクリスト の作成に取り組みたい。
この記事が気に入ったらサポートをしてみませんか?