1

私はそれが書かれているのとまったく同じようにチュートリアルを続けてきました。これまでのところ、このセクションまで、すべてが問題なく進んでいます。

config/routes.rbファイルの「GET」ステートメントを次のように変更することになっています。

SampleApp::Application.routes.draw do
  root to: 'static_pages#home'

  match '/help',    to: 'static_pages#help'
  match '/about',   to: 'static_pages#about'
  match '/contact', to: 'static_pages#contact'

これはテストに合格するはずでした。彼らは合格しません。これらは、9つの同様のエラーの1つとして、次のエラーで失敗し続けます。

Failure/Error: visit about_path
NameError:
   undefined local variable or method 'about_path' ....

先に進むために、これをどのように通過させるのかわかりません。私は何を取りこぼしたか?Hartlは何を見逃しましたか?この質問をした他の人々は、意味のある答えを得ることができず、試してみてもうまくいきませんでした。

誰かが尋ねる前に:

Rails、Ruby、およびその他のインストールされたコンポーネントのすべてのバージョンは、今日2012-10-05に書かれているのとまったく同じバージョンです。すべてがチュートリアルと完全に一致します。

更新:これが現在のstatic_pages_spec.rbファイルです

require 'spec_helper'

describe "Static pages" do

  describe "Home page" do

    it "should have the h1 'Sample App'" do
      visit root_path
      page.should have_selector('h1', text: 'Sample App')
    end

    it "should have the base title" do
      visit root_path
      page.should have_selector('title',
                        text: "Ruby on Rails Tutorial Sample App")
    end

    it "should not have a custom page title" do
      visit root_path
      page.should_not have_selector('title', text: '| Home')
    end
  end

  describe "Help page" do

    it "should have the h1 'Help'" do
      visit help_path
      page.should have_selector('h1', text: 'Help')
    end

    it "should have the title 'Help'" do
      visit help_path
      page.should have_selector('title',
                        text: "Ruby on Rails Tutorial Sample App | Help")
    end
  end

  describe "About page" do

    it "should have the h1 'About'" do
      visit about_path
      page.should have_selector('h1', text: 'About Us')
    end

    it "should have the title 'About Us'" do
      visit about_path
      page.should have_selector('title',
                    text: "Ruby on Rails Tutorial Sample App | About Us")
    end
  end

  describe "Contact page" do

    it "should have the h1 'Contact'" do
      visit contact_path
      page.should have_selector('h1', text: 'Contact')
    end

    it "should have the title 'Contact'" do
      visit contact_path
      page.should have_selector('title',
                    text: "Ruby on Rails Tutorial Sample App | Contact")
    end
  end
end

レーキルートの結果:

   root  /                  static_pages#home
   help  /help(.:format)    static_pages#help
   about  /about(.:format)   static_pages#about
   contact  /contact(.:format) static_pages#contact
4

6 に答える 6

3

routes.rb の行を次のように変更してみてください。

match '/about',   to: 'static_pages#about', as: 'about'

また、変更を適用するには、Spork をリロードする必要があります。以下を追加することもできます。

load "#{Rails.root}/config/routes.rb"

Spork.each_runSpork を実行するたびにルートをリロードするためにブロックに追加します。

于 2012-10-05T19:07:10.527 に答える
0

このエラーが発生したばかりで、これを修正するのに役立ちました。layouts/_header.html.erb と static_pages/home.html.erb にそれぞれ signin_path と signup_path を誤って追加してしまいました。これにより、signin_pathが何であるかについて、すべてのページが混乱しました。

私が間違いを犯したもう1つの問題は、ルートパスでした。サンプル アプリ ディレクトリから 'rm public/index.html' を実行すると、routes.rb の 'root 'static_pages#home' が機能するはずです。問題は、パブリック ディレクトリ内のものが、アプリをカスタマイズするときにアプリの他の部分をオーバーライドすることです。これが私を助けてくれたのと同じように役立つことを願っています:)

于 2014-08-13T00:03:10.920 に答える
0

デフォルトでは、名前付きルートはスペックで使用できません。次のコードを spec_helper.rb ファイルに追加します。

RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers
end
于 2015-06-10T20:49:11.813 に答える
0

ブラウザで入力すればいいと思います

http://localhost:3000/

http://localhost:3000/static_pages/homeたとえば、ホームページを取得する代わりに。問題はコードではなく、ページにアクセスする方法だと思います。localhost:3000/static_pages/homeチュートリアルの 5.3.2 より前のセクションでは、ホームページにアクセスするために にアクセスする必要がありました。5.3.2 の指示に従った後は、 と入力するだけですhttp://localhost:3000/

于 2014-07-19T19:14:59.737 に答える
0

こんにちは、これを仕様に追加してみてください。

describe "Static pages" do
include Rails.application.routes.url_helpers
.......
于 2014-07-02T08:48:43.280 に答える