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

时间:2018-03-16 13:04:27

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 routes ruby-on-rails-3.2

我正在尝试学习Ruby on rails并且我一直收到此错误。

我的控制器是

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 routes:

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'

我即将到来

  

路由错误   未初始化的常量Clasa9Controller

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

2 个答案:

答案 0 :(得分:1)

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

如果没有,那么您应该通过创建初始化程序或在config / development.rb中添加autoload_path来加载文件

默认情况下加载Rails:

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

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

  3. 目录测试/邮件/预览。

答案 1 :(得分:0)

看看它是clasa9,但为什么当你使用underscore这样的方法运行时

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

它返回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 
...

遵循它应该有效。