心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。3.2.2章。

   


静的ページにaboutというページを追加するのですが、rails gを先にするのではなく、テストコードを書くところから始まります。いよいよTDDっぽくなってきました。実際に、あとからページ追加っていうのも開発ではおおいにあり得るので、その練習もできますね。

Aboutページのテストを追加

リスト3.14 Aboutページのテストを追加する。
spec/requests/static_pages_spec.rb

require 'spec_helper'

describe "静的ページのテスト" do

  describe "Homeページのテスト" do
    it "コンテンツに'Twili'という文字がある" do
      visit '/static_pages/home'
      expect(page).to have_content('Twili')
    end
  end

  describe "Helpページのテスト" do

    it "コンテンツに'Help'という文字がある" do
      visit '/static_pages/help'
      expect(page).to have_content('Help')
    end
  end

  describe "Aboutページのテスト" do

    it "コンテンツに'About Us'という文字がある" do 
      visit '/static_pages/about'
      expect(page).to have_content('About Us')
    end
  end
end

静的ページのテストコードが長くなってきました。後でリファクタリングするはずですが、とりあえずこのまま。
テストを実行すると、まだaboutページすらないので当然失敗します。

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionController::RoutingError:
    No route matches [GET] “/static_pages/about”

2つエラーの理由をだされてしまいました。

aboutのルートを追加する

ではabouをrains gするのではなく、about用のルートを追加する。だそうです。これはチュートリアルなので、出たエラーを一つづつつぶしてみよう!っていうことですね。
まずは

No route matches [GET] “/static_pages/about”

これをつぶします。

リスト3.15 about用のルートを追加する。
config/routes.rb

Twili::Application.routes.draw do
  get "static_pages/home"
  get "static_pages/help"
  get "static_pages/about" #<=今回追加する
end

テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
AbstractController::ActionNotFound:
The action ‘about’ could not be found for StaticPagesController

相変わらず2つエラー理由ですが、2番目の理由がActionController::RoutingError: からAbstractController::ActionNotFound:に変わりました。

StaticPagesコントローラにaboutのアクションを追加する

リスト3.16 aboutアクションが追加されたStaticPagesコントローラ。
app/controllers/static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end

  def help
  end

  def about
  end
end

rails gすれば自動的に追加になりますがお勉強のため手修正です。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

1) 静的ページのテスト Aboutページのテスト コンテンツに’About Us’という文字がある
Failure/Error: visit ‘/static_pages/about’
ActionView::MissingTemplate:
Missing template static_pages/about, application/about with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :raw, :ruby, :jbuilder, :coffee]}. Searched in:
* “/Users/tomokoni/rails/Twili/app/views”

もっと長いエラーメッセージが出てしまった。MissingTemplateだそうです。当然です。viewありませんから。

aboutのviewを追加する

これもrails gすれば自動的にできますが、お勉強です!
リスト3.17 Aboutページのコード
app/views/static_pages/about.html.erb

<h1>About Us</h1>
<p>
  The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  is a project to make a book and screencasts to teach web development
  with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This
  is the sample application for the tutorial.
</p>

RailsTutorialのままです。
テストを実行すると、

bundle exec rspec spec/requests/static_pages_spec.rb

今度はpassしました。3 examples, 0 failures
ばんざいーい。

RailsTutorialにはありませんが、いったんここでcommitしてもよいかも。
次は「3.3少しだけ動的なページ」です。

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
ToDoの管理方法

東大生はノートがきれいだとか、、 きれいに書いている暇があったら、頭に書いて覚え …

twitterと連携した写真のライブラリー

iPhoneを使うようになってから気軽に写真撮影し、そのままtwitter投稿す …

no image
RailsTutorial4.0を高速で復習する。10.3章。

10.3マイクロポストを操作する、です。 仕様の理解 ポストはユーザーだけが投稿 …

no image
RailsTutorial4.0を高速で復習する。8.3章。

8.3Cucumberの紹介 (オプション) Cucumberは振舞駆動開発用の …

no image
RailsTutorial4.0を高速で復習する。8.2.5章。

8.2.5ユーザー登録と同時にサインインする、です。 ユーザーが登録を行った後、 …

no image
RailsTutorial4.0を高速で復習する。4.6章。

4.6演習、です。4章がRubyの説明章だったので演習はRuby問題になっていま …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

no image
RailsTutorial4.0を高速で復習する。5.3章。

5.3レイアウトのリンク、です。 AboutはRailsらしくない、とおっしゃっ …

RailsTutorial4.0を高速で復習する。9章。

8章で随分おなかいっぱいになりました。 第9章 ユーザーの更新・表示・削除、です …

Lionさんがお出まし?AppStoreでのアップデート

MacBookAirのDockにあるAppStoreアイコンになにやらアップデー …