Постоянная ошибка Unitizlied внутри вложенного контроллера - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть этот контроллер:

class V2::OffersController > ApplicationController

в этом файле: app/controllers/v2/offers_controller.rb

И в этом контроллере я пытаюсь сослаться на этот класс:

module Presenters
    class Offers

в этом файле: app/presenters/offers.rb

Я создаю экземпляр класса следующим образом:

Presenters::Offers.new()

Если установить config.eager_load в true, все загрузится нормально, но только наПервая попытка, после этого я получаю эту ошибку:

NameError (uninitialized constant V2::OffersController::Presenters)

Я использую Rails 5.1.6.1 на Ruby 2.5.0

1 Ответ

0 голосов
/ 11 февраля 2019

Определение класса для файла app/presenters/offers.rb должно быть:

class Offers
end

, а не

module Presenters
  class Offers
  end
end

Первый уровень под app (presenters, в данном случае)существует для ваших организационных целей и не считается модулем.Если вы хотите использовать:

module Presenters
  class Offers
  end
end

Тогда файл должен быть app/presenters/presenters/offers.

Лично я бы сделал что-то вроде:

class OffersPresenter
end

, которыйбудет определен в app/presenters/offers_presenter.rb

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