0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsチュートリアル 第3章 3.1〜3.3 要約

Posted at

この記事の目的

・現在、Railsチュートリアルを学習しています。Railsチュートリアルで理解したことをアウトプットすることにより理解を深め、のちに行うアプリケーション開発に役立てていきたいと考えています。また、私みたいな初学者の方との情報共有になればと思います。  ※Git Github Herokuの扱い方などはまた別にまとめてみようと思います。

3.1セットアップ

・新しくRailsプロジェクトを作成する ※手順がわかりやすいように番号をつけてまとめてみました。 *** 1 サンプルアプリケーションを生成する。
$ rails _6.0.3_ new sample_app
$ cd sample_app/

2 Gemfileを編集、gemをインストール

$ bundle _2.2.17_ config set --local without 'production'
$ bundle _2.2.17_ install

3 Yarnを使ってWebpackerをインストール

$ rails webpacker:install

4 Hello Worldを出力してみる。 動くかどうか確認 application_controllerにhelloアクションを追加 + ルーティングの設定

app/controllers/application_controller.rb
def hello
   render html: "hello, world!"
end
config/routes.rb
root 'application#hello'

3.2静的なページ 

・Railsのアクションやビューを使って静的なHTMLのみのページを作成し、その後、静的なページを動的なページに作り変える。 *** StaticPagesコントローラを生成する
$ rails generate controller StaticPages home help

:::メモ
$ rails generate controller コントローラー名(複数形の名前にする) アクション名
コントローラーの作成と同時にアクションも生成できる
:::

config/roures.rbにhomeアクションとhelpアクションが定義される

config/routes.rb
Rails.application.routes.draw do
  get  'static_pages/home'
  get  'static_pages/help'
end

StaticPages内にhomeアクションを追加したため、/static_pages/homeにアクセスすることでページを取得(GET)することができる。

$ rails s

生成されたStaticPagesコントローラー
コントローラー生成時に自動的にhomeアクションとhelpアクションに対応したview(views/static_pages/)も生成される

app/controllers/static_pages_controller.rb
class StaticPagesController < ApplicationController
  def home
  end

  def help
  end
end

HomeページのHTMLを修正するとHelpページのHTMLを修正して終了。


3.3最初のテスト

Aboutページを作成しその際、テストを作成する。また、何らかの変更を行う際は常に『自動化テスト』を作成する習慣を身につける。テストをしっかりと行っていればバグが出た時にも対処しやすくなる。 *** rails generate controllerを実行した時に生成されたテストを確認してみましょう
test/controllers/static_pages_controller_test.rb
require 'test_helper'

class StaticPagesControllerTest < ActionDispatch::IntegrationTest

  test "should get home" do
    get static_pages_home_url
    assert_response :success
  end

  test "should get help" do
    get static_pages_help_url
    assert_response :success
  end
end

 下のテストはHomeページのテスト。GETリクエストをhomeアクションに対して発行(=送信)せよ。そうすれば、リクエストに対するレスポンスは[成功]になるはず という意味になる。

  test "should get home" do
    get static_pages_home_url
    assert_response :success
  end

 テストを実行し、成功するのを確認

$ rails db:migrate     # システムによっては必要
$ rails test
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips

 Aboutページのテストを書く

test/controllers/static_pages_controller_test.rb
  test "should get about" do
    get static_pages_about_url
    assert_response :success
  end

rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「AboutページへのURLが見つからない」

$ rails test
NameError: undefined local variable or method `static_pages_about_url'

about用のルートを追加する。

config/routes.rb
 get  'static_pages/about'

rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「StaticPagesコントローラにaboutアクションがない」

$ rails test
AbstractController::ActionNotFound:
The action 'about' could not be found for StaticPagesController

aboutアクションを追加する。

app/controllers/static_pages_controller.rb
def about
end

rails tをするとエラーになる
エラーメッセージを確認する。メッセージによると「テンプレートがない」

$ rails test
ActionController::UnknownFormat: StaticPagesController#about
is missing a template for this request format and variant.

about.html.erbを追加し、編集

$ touch app/views/static_pages/about.html.erb

rails t するとGREENになる

$ rails test
3 tests, 3 assertions, 0 failures, 0 errors, 0 skips
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?