加载视图时出现“未初始化的常量”路由错误

时间:2019-09-21 02:42:26

标签: ruby-on-rails ruby-on-rails-5.1

我是红宝石和铁轨的初学者,并且使用Rails 5.17开发用于课程的Web应用程序。

创建空的Rails项目已成功,但是在创建新的控制器时出现了问题。我从项目的根目录生成了一个名为cars的新控制器,它很成功。应用/控制器中有一个名为cars_controller.rb的文件,如下所示:

 class CarsController < ApplicationController
 end

我向名为hello的文件添加了一种不执行任何操作的方法。

然后,我在cars.html.erb目录中创建了一个名为app/views/layouts的文件。此文件是html代码的基本页面。

config/routes.rb中,我添加了以下内容:

 get '/cars', to:: 'cars_controller#hello'
 resources: cars

所有这些之后,我运行了rails server,并在浏览器中打开了localhost:3000。这会弹出普通的Ruby on Rails欢迎页面。

但是当我转到localhost:3000/cars时,得到以下信息:

Routing Error uninitialized constant CarsControllerController

我尝试更改cars_controller.rb文件的名称。我尝试将控制器文件中类的名称从CarsController更改为Cars。我在routes.rb中尝试了许多不同的路线。我终于尝试卸载Rails 5.17并安装Rails 5.13

我很困惑,如果能得到我的任何建议,我将不胜感激。预先感谢!

2 个答案:

答案 0 :(得分:1)

我认为您在定义路线时遇到了错误-您不需要_controller

相反,请尝试以下操作:

get '/cars', to: 'cars#hello'

此外,请记住,在您的cars目录中,您需要以下视图:hello.html.erb

答案 1 :(得分:1)

关于Rails的一大优点是它偏爱约定而不是配置。但是,要使这真正使您受益,您需要尽可能地坚持“ The Rails Way”而不是您自己的方式。

在这种情况下,请先摆脱自定义的get路线,而只需使用resources :cars

从命令行运行rake routes(您也可以在rails版本上运行rails routes),并查看它为您创建的路由。

现在,将添加到CarsController的方法从hello重命名为index

hello.html.erb文件从app/views/layout移到app/views/cars/index.html.erb

最后,启动rails服务器(rails start)并在浏览器中加载URL http://localhost:3000/cars

---

请注意,app/views/layout中的模板具有特殊用途。这些用于将常规模板应用于您的视图。在控制器中查找layout的使用以获取更多详细信息