著者のマイケル・ハートルは次のように述べています。
ここでルール:
get "static_pages/home"
URI /static_pages/home のリクエストを StaticPages コントローラーのホーム アクションにマップします。
どのように?リクエストのタイプと URL は示されていますが、コントローラとアクションへのマッピングはどこにあるのでしょうか。ただし、私のテストはすべて合格します。
また、StaticPagesController のすべてのアクションを削除してみました。これは次のようになります。
class StaticPagesController < ApplicationController
def home
end
def about
end
def help
end
def contact
end
end
...そして私のテストはまだパスしますが、これは不可解です。いいえ、次のようにすべてのアクションを削除しました:
class StaticPagesController < ApplicationController
end
本の第 2 版 (オンライン) は本当にイライラします。具体的には、Guardfile の変更に関するセクションは理解できません。たとえば、このファイルを編集するように指示した場合:
blah blah blah
dog dog dog
beetle beetle beetle
jump jump jump
次の変更を行います。
blah blah blah
.
.
.
go go go
.
.
.
jump jump jump
...「go go go」という行がコードのどこにあるのか、何か分かりますか?
そして演習 3.5-1 のヒントは完全に間違っています。著者がすべての章の最後にコメント セクションを設ければ、Rails コミュニティは本を自己編集できます。
テスト:
require 'spec_helper'
describe "StaticPages" do
let(:base_title) { "Ruby on Rails Tutorial Sample App" }
describe "Home page" do
it "should have the h1 'Sample App'" do
visit '/static_pages/home'
page.should have_selector('h1', :text => 'Sample App')
end
it "should have the title 'Home'" do
visit "/static_pages/home"
page.should have_selector(
'title',
:text => "#{base_title} | Home")
end
end
describe 'Help page' do
it "should have the h1 'Help'" do
visit "/static_pages/help"
page.should have_selector('h1', :text => 'Help')
end
it "should have the title 'Help'" do
visit '/static_pages/help'
page.should have_selector(
'title',
:text => "#{base_title} | Help")
end
end
describe 'About page' do
it "should have the h1 'About'" do
visit '/static_pages/about'
page.should have_selector('h1', :text => 'About')
end
it "should have the title 'About'" do
visit '/static_pages/about'
page.should have_selector(
'title',
:text => "#{base_title} | About")
end
end
describe 'Contact page' do
it "should have the h1 'Contact'" do
visit '/static_pages/contact'
page.should have_selector('h1', :text => 'Contact')
end
it "should have the title 'Contact'" do
visit '/static_pages/contact'
page.should have_selector(
'title',
:text => "#{base_title} | Contact")
end
end
end