【问题标题】:Getting "Uninitialized constant" routing error when loading a view加载视图时出现“未初始化的常量”路由错误
【发布时间】:2019-09-21 02:42:26
【问题描述】:

我是 ruby​​ 和 rails 的初学者,并使用 Rails 5.17 为课程开发 Web 应用程序。

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

 class CarsController < ApplicationController
 end

我在这个文件中添加了一个名为 hello 的方法,它什么都不做。

然后我在app/views/layouts 目录中创建了一个名为cars.html.erb 的文件。该文件是一个基本的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

我很困惑,如果我能得到任何建议,我将不胜感激。提前致谢!

【问题讨论】:

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


    【解决方案1】:

    Rails 的一大优点是它更喜欢约定而不是配置。但是,为了让您真正受益,您需要尽可能坚持以“Rails 方式”而不是您自己的方式做事。

    在这种情况下,首先摆脱您的自定义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 的使用以了解更多详细信息

    【讨论】:

      【解决方案2】:

      我认为您定义路线的方式有误 - 您不需要 _controller

      试试这个:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-24
        • 1970-01-01
        • 2014-02-01
        • 2015-05-23
        相关资源
        最近更新 更多