Ruby on Rails tutorialを通してのメモ (第3章)
前回まで
- 主に投稿機能を実装しました。
作業開始
point
- 今回から3章です。静的なページを作成するようです。
- 静的なページ例としてはWikipedia
- 動的なページ例としてはTwitter,Facebookでしょうか。
- こちらは静的なページ?動的なページ?の参考になれば。
@ 3.1 セットアップ
リスト3.1 サンプルアプリケーションの生成
$ cd ~/environment $ rails _5.1.6_ new sample_app $ cd sample_app/
- Gemfileをリスト3.2に習いながら編集します。
- 編集したら、$ bundle install を実行してGemfileで指定したgemをインストールします。 ↓のオプションはproduction環境(開発環境)でしか使わないgemはインストールしないようにする設定のようです。
$ bundle install --without production
You have requested:
minitest = 5.10.3
The bundle currently has minitest locked at 5.11.3.
Try running `bundle update minitest`
If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
//
インストールしようとしたminitestのバージョンがGemfileに書いてあるgemより古いようです。(currently has minitest locked at 5.11.3)
なのでbundle updateを指示されていますので、 $ bundle update を実行します。
render html: "hello, world!"
root 'application#hello'
- リスト3.4とリスト3.5は過去に行ったhello world!をデフォルトページで表示させるプログラムです。
- 確認の意味で、$ rails s ($ rails serverの省略形)を実行してもいいかもしれません。hello, world!が表示されたでしょうか。
@ 3.2 静的ページ
- 3.1でセットアップが完了しました。今後の手順としては、
- まずRailsのアクションやビューを使用して静的なHTMLのみのページを作成
- 静的なページを動的なページに作り変える。
リスト3.7: StaticPagesコントローラ内のhomeアクションとhelpアクションで使うルーティング
config/routes.rb
get 'static_pages/home' get 'static_pages/help'
- ルーティングにこちら二つが追加されていることが確認できたでしょうか。
- /static_pages/homeのURLにリクエスト(リクエストとはHTTPリクエストのgetのこと)をするとStaticPagesコントローラのhomeアクションと結びつけている。
- 実際にhttp://localhost:3000/static_pages/home にアクセスして確認してみましょう。私はローカルなのでlocalhostにアクセスしています。
リスト3.8: リスト3.6のrails gで生成されるStaticPagesコントローラ
app/controllers/static_pages_controller.rb
class StaticPagesController < ApplicationController
- classのStaticPagesControllerはメソッド(アクションにあたるdefに囲まれたhomeやhelpのこと)をまとめている。ApplicationControllerを継承しています。
- 純粋なRubyはメソッドは実行しない。今回のようにRailsでApplicationControllerクラスを継承しているためStaticPagesControllerのメソッド(home,help)はRails特有の振る舞いをする。↓
- /static_pages/homeのURLにアクセス
- StaticPagesControllerを参照
- homeアクションのコードを実行
- homeアクションに対応するviewファイルを出力する。(見た目の部分,HTMLファイルの出力)今回はhomeアクションが空なので↓のようなページが表示されているはず。
StaticPages#home
Find me in app/views/static_pages/home.html.erb
- そこで、viewはどのように出力されるか。どのviewが表示されるか。
- viewファイルはアクション名に対応します。
- 今確認したいのは、MVCあたるVの部分で、app/のviewsに対応するファイルがあります。ファイル名は、アクション名と同じで、home,helpがあるはずです。
リスト 3.9: Homeページのview
app/views/static_pages/home.html.erb
<h1>StaticPages#home</h1>
<p>Find me in app/views/static_pages/home.html.erb</p>
リスト3.10: Helpページ用に生成されたview
app/views/static_pages_help.html.erb
<h1>StaticPages#help</h1> <p>Find me in app/views/static_pages/help.html.erb</p>
- つまり、これらのファイルを編集すれば見た目にあたるviewを修正できそうです。