【问题标题】:What is uninitialized constant?什么是未初始化常量?
【发布时间】:2015-11-06 03:57:59
【问题描述】:

我有一个新的 RoR 应用。它有一个页面和这些配置:

routes.rb

Rails.application.routes.draw do
  get 'welcome' => 'mypages#home'

my_pages_controller.rb

class MyPagesController < ApplicationController
    def home
    end
end

当我在 localhost:3000/welcome 运行应用程序时,我收到此错误:

路由错误

未初始化的常量 MypagesController

知道有什么问题吗?

localhost:3000 加载没有问题。

【问题讨论】:

  • MypagesController 的文件名是什么?

标签: ruby-on-rails


【解决方案1】:

你应该匹配你的下划线和camelCasing类:

get 'welcome' =&gt; 'my_pages#home' 将匹配名为 MyPagesController 的控制器。

get 'welcome' =&gt; 'mypages#home' 将匹配名为 MypagesController 的控制器

【讨论】:

    【解决方案2】:

    当你有这条路线时:

    get 'welcome' => 'mypages#home'
    

    Rails 默认会查找MypagesControllerhome 操作。但是,就您而言,您实际上并没有具有该名称的控制器。这就是您收到该错误的原因。

    理想情况下,您应该将路线更改为:

    get 'welcome' => 'my_pages#home'
    

    然后,Rails 将查找与您现有控制器匹配的MyPagesController,您的代码将正常工作。

    或者,(虽然在这种情况下不推荐),您可以在路由中使用 :controller 选项来告诉 Rails 它应该在哪个控制器中找到 home 操作:

    get 'welcome' => 'mypages#home', controller: "my_pages"
    

    这也可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多