undefined局部变量或方法`root_path'Hartl的教程第5.3.2节

sam*_*aek 14 rspec ruby-on-rails ruby-on-rails-3

所以关于Stackoverflow的第一个问题..... =]

我在Michael Hartl的RoR教程的第5.3.2章中的测试都失败了,当教程说它应该通过时(教程说'关于','联系','帮助'应该通过......但是我的全部失败了) .现在一切都工作得很好,但我改变了

get 'static_pages/help' 
Run Code Online (Sandbox Code Playgroud)

match '/help', to: 'static_pages#help'
Run Code Online (Sandbox Code Playgroud)

这样我的

配置/ routes.rb中

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' 
Run Code Online (Sandbox Code Playgroud)

然后一切都变成了地狱.我的所有测试都失败了一个未定义的局部变量或方法'root_path'或'about_path'等(见下面的终端输出).但这里是我的相关文件......万一有人好奇,所有文件都是Hartl所拥有的.我基本上复制并粘贴了每个文件的内容.

有人能帮我吗??????谢谢!

投机/ 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
Run Code Online (Sandbox Code Playgroud)

输入'rspec spec /'的终端输出

FFFFFFFFF

Failures:

  1) Static pages Contact page should have the h1 'Contact'
     Failure/Error: visit contact_path
     NameError:
       undefined local variable or method `contact_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x007fd2093855f8>
     # ./spec/requests/static_pages_spec.rb:55:in `block (3 levels) in <top (required)>'

  2) Static pages Contact page should have the title 'Contact'
     Failure/Error: visit contact_path
     NameError:
       undefined local variable or method `contact_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x007fd208cbeb20>
     # ./spec/requests/static_pages_spec.rb:60:in `block (3 levels) in <top (required)>'

  3) Static pages Help page should have the h1 'Help'
     Failure/Error: visit help_path
     NameError:
       undefined local variable or method `help_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2:0x007fd2094c02b0>
     # ./spec/requests/static_pages_spec.rb:27:in `block (3 levels) in <top (required)>'

  4) Static pages Help page should have the title 'Help'
     Failure/Error: visit help_path
     NameError:
       undefined local variable or method `help_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_2:0x007fd209649208>
     # ./spec/requests/static_pages_spec.rb:32:in `block (3 levels) in <top (required)>'

  5) Static pages About page should have the h1 'About'
     Failure/Error: visit about_path
     NameError:
       undefined local variable or method `about_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3:0x007fd208f16d00>
     # ./spec/requests/static_pages_spec.rb:41:in `block (3 levels) in <top (required)>'

  6) Static pages About page should have the title 'About Us'
     Failure/Error: visit about_path
     NameError:
       undefined local variable or method `about_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_3:0x007fd2094f7990>
     # ./spec/requests/static_pages_spec.rb:46:in `block (3 levels) in <top (required)>'

  7) Static pages Home page should not have a custom page title
     Failure/Error: visit root_path
     NameError:
       undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fd208d30b08>
     # ./spec/requests/static_pages_spec.rb:19:in `block (3 levels) in <top (required)>'

  8) Static pages Home page should have the base title
     Failure/Error: visit root_path
     NameError:
       undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fd208e0cb80>
     # ./spec/requests/static_pages_spec.rb:13:in `block (3 levels) in <top (required)>'

  9) Static pages Home page should have the h1 'Sample App'
     Failure/Error: visit root_path
     NameError:
       undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fd209607268>
     # ./spec/requests/static_pages_spec.rb:8:in `block (3 levels) in <top (required)>'

Finished in 0.30216 seconds
9 examples, 9 failures

Failed examples:

rspec ./spec/requests/static_pages_spec.rb:54 # Static pages Contact page should have the h1 'Contact'
rspec ./spec/requests/static_pages_spec.rb:59 # Static pages Contact page should have the title 'Contact'
rspec ./spec/requests/static_pages_spec.rb:26 # Static pages Help page should have the h1 'Help'
rspec ./spec/requests/static_pages_spec.rb:31 # Static pages Help page should have the title 'Help'
rspec ./spec/requests/static_pages_spec.rb:40 # Static pages About page should have the h1 'About'
rspec ./spec/requests/static_pages_spec.rb:45 # Static pages About page should have the title 'About Us'
rspec ./spec/requests/static_pages_spec.rb:18 # Static pages Home page should not have a custom page title
rspec ./spec/requests/static_pages_spec.rb:12 # Static pages Home page should have the base title
rspec ./spec/requests/static_pages_spec.rb:7 # Static pages Home page should have the h1 'Sample App'
Run Code Online (Sandbox Code Playgroud)

eeb*_*sen 12

我将此作为答案,因为解决方案(来自@mischa)隐藏在@ marflar的答案下评论中:尝试重新启动Spork以解决此问题.

  • [是的,您可以链接到评论](http://stackoverflow.com/questions/12240868/undefined-local-variable-or-method-root-path-hartls-tutorial-chapter-5-3-2/12240937# comment16406832_12240937),尽管公平地说,新用户在哪里找到URI可能并不完全明显.评论结束时的发布时间(例如5月4日15:45` [我的上面](http://stackoverflow.com/questions/12240868/undefined-local-variable-or-method-root- path-hartls-tutorial-chapter-5-3-2/12240937#comment23468060_16375807))是链接. (2认同)

ste*_*och 3

米沙的答案有望解决大部分问题,但您的测试可能仍会在 root_path 问题上失败。

您是否像这样删除了index.html:git rm public/index.html

并且不要忘记提交您的更改:git commit -am "Message"

  • 哦,是的,我明白了。对不起。你在用 Spork 吗?您是否尝试重新启动 Spork 服务器? (10认同)
  • 天哪...这是一个 spork 问题。太感谢了!我真的非常感谢大家的帮助.. (5认同)
  • 我认为你应该删除这些 Rspec.configure 块之一,只需保留 spork prerun 块内的那个 - ps 我现在正在运行你的测试,将报告我发现的内容 (2认同)