Помощники URL-адресов Rails NameError

Привет, я новичок в Rails и Rspec, и я просто читаю учебник Майкла Хартла. Я застрял на том месте, где запускал свой static_pages_spec.rb

C:/Rails/sample_app/spec/requests/static_pages_spec.rb:48:in `block (2 levels) i
n <top (required)>': undefined local variable or method `root_path' for #<Class:
0x55795b0> (NameError)

static_pages_spec.rb:

require 'spec_helper'

describe "Static pages" do

  subject { page }

  shared_examples_for "all static pages" do
    it { should have_selector('h1', text: heading) }
    it { should have_title(full_title(page_title)) }
  end

  describe "Home page" do
    before { visit root_path }
    let(:heading)    { 'Sample App' }
    let(:page_title) { '' }

    it_should_behave_like "all static pages"
    it { should_not have_title('| Home') }
  end

  describe "Help page" do
    before { visit help_path }

    let(:heading)    { 'Help' }
    let(:page_title) { 'Help' }

    it_should_behave_like "all static pages"
  end

  describe "About page" do
    before { visit about_path }

    let(:heading)   { 'About' }
    let(:page_title){ 'About' }

    it_should_behave_like "all static pages"
  end

  describe "Contact page" do
    before { visit contact_path }

    let(:heading)   { 'Contact' }
    let(:page_title){ 'Contact' }

    it_should_behave_like "all static pages"
  end 
  describe "should have the right links on the layout" do
    visit root_path
    click_link "About"
    expect(page).to have_title(full_title('About Us'))
    click_link "Help"
    expect(page).to have_title(full_title('Help'))
    click_link "Contact"
    expect(page).to have_title(full_title('Contact'))
    click_link "Home"
    click_link "Sign up now!"
    expect(page).to have_title(full_title('Sign up'))
    click_link "sample app"
    expect(page).to have_title(full_title('Sample App'))
  end
end

Я не знаю, что случилось. Я использовал этот тест ~ 20 раз с «root_path», но раньше он никогда не создавал проблем. Если это будет полезно, вот мои маршруты.rb:

SampleApp::Application.routes.draw do
    root  'static_pages#home'
    match '/help',    to: 'static_pages#help',    via: 'get'
    match '/about',   to: 'static_pages#about',   via: 'get'
    match '/contact', to: 'static_pages#contact', via: 'get'
        match '/signup',  to: 'users#new',            via: 'get'
    get "users/new"
end

Я только что просмотрел все файлы, которые редактировал за последние 20 минут, но не нашел ничего, что могло бы объяснить это.


person user3453144    schedule 23.03.2014    source источник
comment
Если вы запустите rake:routes, увидите ли вы там корневой путь? Возможно, вам придется сделать root для: static_pages#home   -  person CWitty    schedule 24.03.2014


Ответы (1)


«Вы не можете вызывать методы пути в классе спецификации. Он должен быть в этом блоке». Проверьте это: Rspec неопределенная локальная переменная или метод root_path

person ermenkoff    schedule 23.03.2014