什么是未初始化的常量



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

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加载没有问题。

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

CCD_ 1将与名为CCD_ 2的控制器相匹配。

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

当你有这个路线时:

get 'welcome' => 'mypages#home'

默认情况下,Rails将查找MypagesControllerhome操作。但是,在您的情况下,您实际上并没有一个具有该名称的控制器。这就是为什么你会犯这个错误。

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

get 'welcome' => 'my_pages#home'

然后,Rails将查找MyPagesController,它将与您现有的控制器相匹配,并且您的代码将起作用。

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

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

这也行得通。

最新更新