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' 

这没有任何意义。 当我按照rails教程时,类似的设置工作得很好。 有人可以帮忙吗?

编辑:

我的路线包括

 root "static#home" 

编辑2:

重新打开此主题。 将我的根声明移到顶部并没有解决它。

编辑3:

什么工作包括我的rspec配置中的url_helpers。 我以前从来没有这样做过。 任何人都可以回答为什么这有效

默认情况下,命名路由在规范中不可用。 将以下代码添加到spec_helper.rb

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

在routes.rb中,查看是否已定义root 。 像这样的东西:

 root :to => 'home#index' 

你弄清楚了你的问题,但我想让别人知道他们可能收到错误信息的另一个原因……

 NameError: undefined local variable or method `root_path' 

…是因为他们重命名了“根”路线 :

例如:

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

这将在您的应用程序中创建home_pathhome_url作为命名助手,而root_pathroot_url将是未定义的

正如@emaillenin所提到的,你需要在你的routes.rb文件中包含root to: "controller#action"

但是,你需要确保正确声明它 – 我在找不到root_path之前已经有了它,只是因为它位于routes.rb文件的末尾或者其他什么

显示整个routes.rb文件会routes.rb