Rails教程中的rspec错误:未定义的局部变量或方法`static_pages_index_path'

tho*_*oux 6 rspec ruby-on-rails railstutorial.org

我followind Rails的教程,但有一个问题,第3.2.1节,就在图3.6.跑步时

$ bundle exec rspec spec/requests/static_pages_spec.rb
Run Code Online (Sandbox Code Playgroud)

我失败了

Failures:
  1) StaticPages GET /static_pages works! (now write some real specs)
     Failure/Error: get static_pages_index_path
     NameError:
       undefined local variable or method `static_pages_index_path' for # <RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x007fe7592b33b8>
     # ./spec/requests/static_pages_spec.rb:7:in `block (3 levels) in <top (required)>'    
Finished in 0.00454 seconds
1 example, 1 failure
Failed examples:
rspec ./spec/requests/static_pages_spec.rb:5 # StaticPages GET /static_pages works! (now write some real specs)
Run Code Online (Sandbox Code Playgroud)

这是文件:

规格/请求/ static_pages_spec.rb

require 'spec_helper'
describe "Static pages" do
  describe "Home page" do
    it "should have the content 'Sample App'" do
      visit '/static_pages/home'
      page.should have_content('Sample App')
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ static_pages_controller.rb

class StaticPagesController < ApplicationController
  def home
  end
  def help
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/视图/ static_pages/home.html.erb

<h1>Sample App</h1>
<p>
  This is the home page for the
  <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
  sample application.
</p>
Run Code Online (Sandbox Code Playgroud)

配置/ routes.rb中

SecondApp::Application.routes.draw do
  get "static_pages/home"
  get "static_pages/help"
end
Run Code Online (Sandbox Code Playgroud)

的Gemfile

source 'https://rubygems.org'
gem 'rails', '3.2.3'
group :development do
  gem 'sqlite3', '1.3.5'
  gem 'rspec-rails', '2.9.0'
  gem 'guard-rspec', '0.5.5'
end
group :assets do
  gem 'sass-rails',   '3.2.4'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.0'
group :test do
  gem 'rspec-rails', '2.9.0'
  gem 'capybara', '1.1.2'
  gem 'growl', '1.0.3'
end
group :production do
  gem 'pg', '0.12.2'
end
Run Code Online (Sandbox Code Playgroud)

关于我做错了什么的任何想法?

小智 1

我遇到了同样的问题,我通过以下方式解决了这个问题。我也是一个新手(第一篇 Stack Overflow 帖子……紧张),所以我没有掌握行话:

我收到此错误的原因是我没有创建教程清单 3.4 中描述的 staticpages 控制器(我想我删除了它,并用清单 3.4 后面的练习命令来教你如何删除东西)。检查您是否没有 staticpages 控制器的方法是转到:

sample_app/controllers/ 所以我只有 application_controller.rb 文件,没有static_pages_controller.rb.

所以你必须运行rails generate controller StaticPages home help --no-test-framework 命令并将控制器放在那里。

您可以通过查看localhost:3000/static_pages/home那里是否确实有东西来仔细检查您的工作。

然后根据教程编辑文件home.html.erb并检查static_pages/home它是否确实显示“示例应用程序”。

如果static_pages/home实际上说“示例应用程序”并且当您运行它时测试仍然失败,那么只有上帝可以帮助您。或者也许是 Stack Overflow 上的其他人。祝你好运。