繁体   English   中英

undefined局部变量或方法`root_path'

[英]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_pathhome_url作为命名助手,而root_pathroot_url将是未定义的

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

但是,您需要确保正确声明它 - 我在找不到root_path之前已经有了它,只是因为它位于routes.rb文件的末尾或者某个东西

显示整个routes.rb文件将是有益的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM