Undefined локальная переменная или метод `root_path '

У меня есть следующий блок кода в моем файле rspec, расположенном в корне папки /spec.

require 'spec_helper'

describe "home" do

 subject { page }

 before(:each) { visit root_path }

 describe "page" do
 it { should have_title('My Page')}
 end

end

Когда я запускаю его, я получаю

undefined local variable or method `root_path'

Это не имеет никакого смысла. Когда я следил за инструкциями по рельсам, подобная настройка работала отлично. Может ли кто-нибудь помочь?

EDIT:

Мои маршруты включают

root "static#home"

ИЗМЕНИТЬ 2:

Открытие этой темы. Перемещение моего корневого объявления в начало не исправляло его.

ИЗМЕНИТЬ 3:

Что работало, включая url_helpers в моей конфигурации rspec. Мне никогда не приходилось это делать раньше. может кто-нибудь ответить, почему это сработало?

Ответы

Ответ 1

Именованные маршруты по умолчанию недоступны в спецификациях. Добавьте следующий код в spec_helper.rb:

RSpec.configure do |config|
  config.include Rails.application.routes.url_helpers
end

Ответ 2

В ваших route.rb, посмотрите, если вы определили root. Что-то вроде этого:

root :to => 'home#index'

Ответ 3

Как упоминалось в @emaillenin, вам нужно включить root to: "controller#action" в ваш routes.rb файл

Однако вам нужно убедиться, что это объявлено правильно - у меня было это до того, как root_path не найден, только потому, что он находится в конце файла routes.rb или что-то

Было бы полезно показать весь ваш routes.rb файл

Ответ 4

Вы выяснили свою проблему, хотя я хочу, чтобы другие знали, что еще одна причина, по которой они могут получить сообщение об ошибке...

NameError: undefined local variable or method `root_path'

... заключается в том, что они переименовали "корневой" маршрут:

Например:

root to: 'pages#landing', as: :home

Это создаст home_path и home_url в качестве именных помощников в вашем приложении, тогда как root_path и root_url будет undefined.