[英]undefined local variable or method `root_path'
我在/ spec文件夹的根目录中的rspec文件中有以下代码块。
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
文件将是有益的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.