【问题标题】:uninitialized constant Blog::PostsController未初始化的常量 Blog::PostsController
【发布时间】:2018-02-23 15:59:21
【问题描述】:

我在运行我的 Rails 应用程序时遇到以下错误,“未初始化的常量 Blog::PostsController”

routes.rb

Rails.application.routes.draw do

  devise_for :authors
  root to: 'blog/posts#index'

  namespace :author do
    resources :posts
  end

  scope module: 'blog' do
    get 'about'     => 'pages#about',   as: :about
    get 'contact'   => 'pages#contact', as: :contact
    get 'posts'     => 'posts#index',   as: :posts   
    get 'posts/:id' => 'posts#show',    as: :post
  end

end

posts.controller.rb

module Blog
  class PostsController < BlogController   

    def index
      @post = Post.most_recent
    end

    def show
      @post = Post.friendly.find(params[:id])
    end

  private

    def set_post

    end

  end    
end

目录路径如下:

app/controller/blog/posts.controller.rb

【问题讨论】:

  • 为什么PostsController会继承于BlogController
  • 我猜你的文件命名约定是错误的。文件名应为app/controller/blog/posts_controller.rb 而不是app/controller/blog/posts.controller.rb
  • Araratan - 正是它的设计方式。

标签: ruby-on-rails


【解决方案1】:

我想问题出在命名约定上。 这是命名约定的示例:

Controller Naming Convention

Class: PostsController

File: /app/controllers/posts_controller.rb

有关命名约定的更多详细信息,请查看:http://www.ganeshkunwar.com.np/2018/01/02/naming-convention-rails/

同时从 application_controller 继承帖子控制器,而不是从博客控制器。

【讨论】:

  • #SahidurRahmanSuman 和#Ganesh 就是这样。根据您的建议,我将句点更改为下划线。
猜你喜欢
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多