路由错误未初始化的常量控制器

Routing Error uninitialized constant controller

我正尝试在 rails 上学习 Ruby,但我一直收到此错误。

我的控制器是

class Clasa9Controller < ApplicationController
  def multimi
  end

  def progresii
  end

  def functii
  end

  def vectori
  end

  def trigonometrie
  end

  def geometrie
  end
end

clasa9.html.erb

 <button class="btn"><%= link_to "", multimi_path %></button>

rails 航线:

multimi GET    /clasa_9/multimi(.:format)           clasa_9#multimi
               progresii GET    /clasa_9/progresii(.:format)         clasa_9#progresii
                 functii GET    /clasa_9/functii(.:format)           clasa_9#functii
                 vectori GET    /clasa_9/vectori(.:format)           clasa_9#vectori
           trigonometrie GET    /clasa_9/trigonometrie(.:format)     clasa_9#trigonometrie
               geometrie GET    /clasa_9/geometrie(.:format)         clasa_9#geometrie

和routes.rb

 get 'clasa_9/multimi', to:"clasa_9#multimi", as:"multimi"

  get 'clasa_9/progresii', to:"clasa_9#progresii", as:"progresii"

  get 'clasa_9/functii', to:"clasa_9#functii", as:"functii"

  get 'clasa_9/vectori', to:"clasa_9#vectori", as:"vectori"

  get 'clasa_9/trigonometrie',  to:"clasa_9#trigonometrie", as:"trigonometrie"

  get 'clasa_9/geometrie',  to:"clasa_9#geometrie", as:"geometrie"

  devise_for :users

  get 'pages/home'

  get 'pages/clasa9'

  get 'pages/clasa10'

  get 'pages/clasa11'

  get 'pages/clasa12'

  get 'pages/about'

  root 'pages#home'

我正在

Routing Error uninitialized constant Clasa9Controller

我试图通过查找此处已发布的内容来解决此问题,但我无法解决...我不明白我应该更改什么。

如果您的文件位于 app/controllers 文件夹内,则可能是文件名问题。您的文件名称应为 clasa9_controller.rb。

如果不是,那么您应该通过创建初始化程序或在 config/development.rb

中添加 autoload_path 来加载文件

Rails 默认加载:

  1. 启动时存在的应用程序和引擎中的应用程序的所有子目录。例如,app/controllers。它们不需要是默认目录,任何像 app/workers 这样的自定义目录自动属于 autoload_paths.

  2. 应用程序和引擎中名为 app/*/ 的任何现有二级目录。

  3. 目录test/mailers/previews.

看起来应该是 clasa9 但为什么当你 运行 使用 underscore 方法时会这样

Loading development environment (Rails 5.1.4)
2.3.4 :001 > "Clasa9Controller".underscore
 => "clasa9_controller" 

它 returns clasa9_controller 这意味着您的控制器是 clasa9 而不是 clasa_9 并且文件名将是 clasa9_controller.rb 那么您的 routes 将像这样 to: "clasa9#multimi"

get 'clasa_9/multimi', to: "clasa9#multimi", as: "multimi"
#or
#get 'clasa_9/multimi', to: "clasa9#multimi", as: :multimi # removed doublw quotes from multimi 
...

按照这个应该可以。