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 个类似错误之一,它们继续失败,并出现以下错误:

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

我不知道如何让这件事通过,这样我才能继续前进。我错过了什么?哈特尔错过了什么?其他问过这个问题的人从来没有得到任何有意义的答案,甚至在尝试时也没有得到任何答案。

在有人问之前:

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_run块中,以便在每次运行 Spork 时重新加载路由。

于 2012-10-05T19:07:10.527 回答
1

重新加载 spork 对我有用。

于 2013-05-09T01:21:45.417 回答
0

嗨,尝试将其添加到您的规格中。

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

我认为你应该在浏览器中输入

http://localhost:3000/

而不是http://localhost:3000/static_pages/home例如获取主页。我认为问题不在于代码,而在于如何访问页面。在教程中5.3.2之前的部分,您需要访问localhost:3000/static_pages/home才能访问主页。按照 5.3.2 中的说明操作后,您只需键入http://localhost:3000/.

于 2014-07-19T19:14:59.737 回答
0

我刚刚遇到此错误,并在解决此问题时得到了一些帮助。我错误地分别在 layouts/_header.html.erb 和 static_pages/home.html.erb 上添加了 signin_path 和 signup_path。这让每个页面都对 signin_path 是什么感到困惑。

我犯的另一个错误是根路径。如果您从示例应用程序目录运行“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 回答