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_path
和home_url
作为命名助手,而root_path
和root_url
将是未定义的 。
正如@emaillenin
所提到的,你需要在你的routes.rb
文件中包含root to: "controller#action"
但是,你需要确保正确声明它 – 我在找不到root_path
之前已经有了它,只是因为它位于routes.rb
文件的末尾或者其他什么
显示整个routes.rb
文件会routes.rb