【问题标题】:Routing Error uninitialized constant controller路由错误未初始化常量控制器
【发布时间】:2018-08-25 13:34:23
【问题描述】:

我正在尝试在 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>

铁路路线:

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

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

【问题讨论】:

  • 你的控制器文件叫什么?它必须与您的控制器名称匹配 - 在您的情况下,我相信 clasa9_controller.rb 或 clasa_9_controller.rb

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


【解决方案1】:

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

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

Rails 默认加载:

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

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

  3. 目录 test/mailers/previews。

【讨论】:

  • 我也面临同样的问题。我的控制器很好,你能告诉我如何做你的第二个解决方案............如果没有,那么你应该通过创建一个初始化程序或通过在配置/开发中添加一个 autoload_path 来加载文件。 rb
【解决方案2】:

看起来应该是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 
...

按照它应该可以工作。

【讨论】:

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