web-dev-qa-db-fra.com

variable ou méthode locale non définie `root_path '

J'ai le bloc de code suivant dans mon fichier rspec situé à la racine du dossier/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

Quand je le lance je reçois

undefined local variable or method `root_path'

Ce qui n'a aucun sens. Lorsque j'ai suivi le tutoriel Rails, une configuration similaire a très bien fonctionné. Quelqu'un peut-il m'aider?

MODIFIER:

Mes itinéraires incluent

root "static#home"

MODIFIER 2:

Rouvrir ce sujet. Déplacer ma déclaration racine vers le haut ne l'a pas corrigé.

MODIFIER 3:

Ce qui a fonctionné était d'inclure url_helpers dans ma configuration rspec. Je n'ai jamais eu à faire ça avant. quelqu'un peut-il expliquer pourquoi cela a fonctionné?

21
user3389436

Les itinéraires nommés ne sont pas disponibles par défaut dans les spécifications. Ajoutez le code suivant à spec_helper.rb:

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

Dans votre routes.rb, voyez si vous avez défini root. Quelque chose comme ça:

root :to => 'home#index'
14

Vous avez compris votre problème, bien que je veuille faire savoir aux autres qu'une autre raison pour laquelle ils peuvent recevoir le message d'erreur ...

NameError: undefined local variable or method `root_path'

... parce qu'ils renommé la route "root" :

Par exemple:

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

Cela va créer home_path et home_url en tant qu'assistants nommés dans votre application, tandis que root_path et root_url sera indéfini .

7
user664833

Comme mentionné par @emaillenin, vous devrez inclure root to: "controller#action" dans votre routes.rb fichier

Cependant, vous devez vous assurer que cela est déclaré correctement - je l'ai déjà eu avant cela root_path est introuvable, uniquement parce qu'il se trouve à la fin du routes.rb fichier ou quelque chose

Il serait utile de montrer votre routes.rb fichier

1
Richard Peck