誰かがこれで私を助けてくれることを本当に望んでいます。私は Michael Hartl の Rails 3 チュートリアルに従っていますが、第 5 章で壁にぶつかりました。昨日の大半を、すべての作業を振り返り、Stack Overflow で関連するすべての質問を調べて、問題を解決することに費やしました。そこにはたくさんの情報がありましたが、どれも私の問題を解決しておらず、どこが間違っているのか正直に理解できません.
著者が 'static_pages_spec.rb' ファイルをクリーンアップする手順を説明するところまで来るまで、すべてが順調に進んでいました (サイトは本のこの時点で言うとおりに機能します)。私は現在この状態にあります:
require 'spec_helper'
describe "Static pages" do
subject { page }
describe "Home page" do
before { visit root_path }
it { should have_selector('h1', text: 'Sample App') }
it { should have_selector('title', text: full_title('')) }
it { should_not have_selector 'title', text: '| Home' }
end
describe "Help page" do
before { visit help_path }
it { should have_selector('h1', text: 'Help') }
it { should have_selector('title', text: full_title('Help')) }
end
describe "About page" do
before { visit about_path }
it { should have_selector('h1', text: 'About') }
it { should have_selector('title', text: full_title('About Us')) }
end
describe "Contact page" do
before { visit contact_path }
it { should have_selector('h1', text: 'Contact') }
it { should have_selector('title', text: full_title('Contact')) }
end
end
著者が説明したように、「spec/support/utilities.rb」ファイルも両方持っています。
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
終わり
「app/helpers/application_helper.rb」の以下と同様
module ApplicationHelper
#Returns the full title based on a per-page basis.
def full_title(page_title)
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
"#{base_title} | #{page_title}"
end
end
終わり
「guard」を実行すると (Guard、Spork などのセットアップを完了しました)、次の 3 つのエラーが発生します。
1) 静的ページ ヘルプ ページの失敗/エラー: it { should have_selector('title', text: full_title('Help')) } 予期される css "title" with text "Ruby on Rails Tutorial Sample App | Help" to return >something # ./spec/requests/static_pages_spec.rb:19:in `ブロック (3 レベル) in '
2) 静的ページ About page Failure/Error: it { should have_selector('title', text: full_title('About Us')) } expected css "title" with text "Ruby on Rails Tutorial Sample App | About Us" to > return something # ./spec/requests/static_pages_spec.rb:26:in `ブロック (3 レベル) in '
3) 静的ページ 連絡先ページ 失敗/エラー: it { should have_selector('title', text: full_title('Contact')) } expected css "title" with text "Ruby on Rails Tutorial Sample App | Contact" to > return something # ./spec/requests/static_pages_spec.rb:33:in `ブロック (3 レベル) in '
サイトは正常に動作します (ルーティングは正しいようです) が、ページのソースを表示すると、:title が常に「Ruby on Rails Tutorial Sample App」になっていることに気付きました。' | :page_title ' が付加されていないようです。私のrspecテストは本の初期の時点で機能していたので、それを破るために何をしたかを見つけることができません。
私は、助けようとしている人々が GitHub のコードへのアクセスを要求しているという質問をたくさん見てきました。エラーをすぐに見つけられるように、すべてのコードをそこに配置しました。
https://github.com/rbrowndev/sampleapp.git
https://github.com/rbrowndev/sampleapp/tree/filling-in-layout
私はこれに慣れていないので、プロジェクトを複製できるようにリポジトリが適切に構成されていない場合はお知らせください。私はそれをそのように設定したと信じていますが、私は初心者なので...
誰かが助けることができれば、それは大歓迎です。GitHub だけでなく SO にソース コードをもっと投稿したい場合はお知らせください。
ありがとう。