我是红宝石和铁轨的初学者,并且使用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
。
我很困惑,如果能得到我的任何建议,我将不胜感激。预先感谢!
答案 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
的使用以获取更多详细信息