什么是未初始化的常量?

时间:2015-11-06 03:57:59

标签: ruby-on-rails

我有一个新的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加载没有问题。

2 个答案:

答案 0 :(得分:2)

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

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

get 'welcome' => 'mypages#home'将匹配名为MypagesController

的控制器

答案 1 :(得分:2)

当你有这条路线时:

get 'welcome' => 'mypages#home'

默认情况下,Rails会查找MypagesController的{​​{1}}操作。但是,在你的情况下,你真的没有一个具有该名称的控制器。这就是你得到这个错误的原因。

理想情况下,您应该改变您的路线:

home

然后,Rails将查找与您现有控制器匹配的get 'welcome' => 'my_pages#home' ,您的代码将起作用。

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

home

这也可以。