Ruby on Rails tutorialを通してのメモ (第3章)

前回まで

 

taokiengineer.hatenadiary.jp

  • 主に投稿機能を実装しました。

 

作業開始  

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
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
※私はbundle install の際に↓のようなエラーが出たので対応をします。
 
 //

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 を実行します。

bundle updateについてですが、今回は開発環境ですが、本番環境では安易に実行すべきではないようです
 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
 
適宜gitのところは省略します。
 
リスト3.4 helloアクションをApplicationコントローラに追加する
app/controllers/application_controller.rb
    render html: "hello, world!"
 リスト3.5: ルートルーティングを設定する
config/routes.rb
  root 'application#hello'


  • リスト3.4とリスト3.5は過去に行ったhello world!をデフォルトページで表示させるプログラムです。
  • 確認の意味で、$ rails s ($ rails serverの省略形)を実行してもいいかもしれません。hello, world!が表示されたでしょうか。

@ 3.2 静的ページ

  • 3.1でセットアップが完了しました。今後の手順としては、
  1. まずRailsのアクションやビューを使用して静的なHTMLのみのページを作成
  2. 静的なページを動的なページに作り変える。
  • Railsのアクションはコントローラ内に置く。
  • コントローラ内の各アクションは目的に沿って作成、削除を行う。
  • 作業はapp/controllersやapp/viewsディレクトリ内で主に行う。

3.2.1 静的なページの生成

  • $ rails g ($ rails generateの略) でコントローラを生成する。引数はアクション名で、アクション名はhome, help, aboutにする。aboutはあえて学習のため手動だそうです。
  • $rails s$rails g などの短縮系は積極的に使いましょう。

リスト3.6: StaticPagesコントローラを生成する

$ rails generate controller StaticPages home help 

 

リスト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はメソッドは実行しない。今回のようにRailsApplicationControllerクラスを継承しているためStaticPagesControllerのメソッド(home,help)はRails特有の振る舞いをする。↓
  1. /static_pages/homeのURLにアクセス
  2. StaticPagesControllerを参照
  3. homeアクションのコードを実行
  4. 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を修正できそうです。 
 
to be continued... 
ほぼ初心者ではありますが、ぜひ、自分だったらこう記事を書くなーとか、思っていただけたらと思います。わかりにくい点があるかと思いますが、何とぞよろしくお願いします🙇‍♂️
 
オススメの曲

 

 私がEDMにドハマりした曲です。