LoadError Невозможно автоматически загрузить константу (Rails Engine) - PullRequest
0 голосов
/ 10 октября 2018

Всякий раз, когда я сталкиваюсь с конечными точками (пример: приветствовать), выставленный движком рельсов, я получаю эту ошибку.

Ошибка:

"LoadError(Unable to autoload constant TestingController, 
expected /local_path/app/controllers/testing_controller.rb to define it): 
/Users/xxxxx/.rvm/gems/ruby-2.5.1/gems/activesupport-5.2.1/lib/active_support/
dependencies.rb:507:in `load_missing_constant'"

Двигатель:

У меня естьдвигатель с методом действия greet, определенным ниже

# type: class
# path: app/controllers/testing_controller.rb
# file name: testing_controller.rb 
module Parent
  module Child
    class TestingController < ApplicationController
      def initialize
        @name = 'BOB'
      end

      def greet
        render json: {'hi': 'hi', 'name': @name}
      end
    end
  end
end

маршруты, определенные как

# type: route
# path: app/config/routes.rb
# file name: routes.rb 
Parent::Child::Engine.routes.draw do
  get 'greet', to: 'testing#greet', as: :greet
end

Подробности:

Этот двигатель был установлен на драгоценный камень ABCкоторый затем используется в приложении rails Example.Когда я впервые набираю маршрут greet в приложении через http://localhost:3000/greet, я получаю LoadError.

Однако, если я обновляю страницу, она отображает JSON, как и ожидалось.{"hi":"hi","name":"BOB"}.

у нас есть development.rb (app / config / env /), кэш и рабочая нагрузка которого определены, как указано ниже

config.cache_classes = false
config.eager_load = false

Ruby: 2.5.1
Rails: 5.2.1

Спасибо за вашу помощь, высоко ценится.

1 Ответ

0 голосов
/ 10 октября 2018

Похоже, что сообщение исходит из предположения, что в корневом уровне файла testing_controller.rb есть определение класса TestingController, в то время как этот класс определен во вложенных модулях Parent::Child::.

Полагаю, что если вы поместите файл testing_controller.rb по следующему пути: app/controllers/parent/child/testing_controller.rb, ошибка исчезнет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...