Как определить контроллер внутри модуля? - PullRequest
0 голосов
/ 08 марта 2020

Я изучаю рельсы и получил это небольшое приложение для учебных целей.

Это структура моей папки, я пытаюсь настроить ее для подхода DDDi sh:

enter image description here

Это мой launcher_controller:

module Web
    class LauncherController < ApplicationController
        def launch
            requestBody = params[:launcher]

            render json: requestBody
        end
    end
end

И route.rb:

Rails.application.routes.draw do
    scope module: 'web' do
        post 'launcher/launch', action: 'launch', controller: 'launcher'
    end
end

Я уже добавил сеть и путь контроллеров к autoload_paths для zeitwerk для загрузки файлов в application.rb:

config.autoload_paths << config.root.join('app', 'web')
config.autoload_paths << config.root.join('app', 'web', 'controllers')

Я могу запустить сервер rails up, но когда я вызываю действие контроллера, я получаю:

ActionController :: RoutingError (неинициализированная константа Web)

Мне кажется, что это должно быть что-то действительно простое, но я не могу найти проблему ... Я слежу за документами по https://guides.rubyonrails.org/routing.html#specifying -a-controller-to-use

Итак, какую базовую концепцию c я здесь упускаю? Разве я не определяю модуль в файле launch_controller.rb?

EDIT

Хорошо, основываясь на первом ответе, я изменил модуль на Web в определении модуля и 'web' на route.rb.

Теперь я получил

ActionController :: RoutingError (неинициализированная константа Web)

Я не знаю если это может быть проблемой, но это приложение только для веб-API. Я сгенерировал проект с помощью следующей команды:

rails new tracker-launcher -M -O -J -T --api

1 Ответ

1 голос
/ 09 марта 2020

Может быть много причин для этого. Первое, что я вижу, вы определили WebStuff, но в маршрутах, используя webstuff, то есть Webstuff (см. Регистр). Попробуйте установить его на web_stuff или переименовать классы / модули. Кроме того, имена файлов важны для констант автозагрузки и перезагрузки (режим Classi c) или констант автозагрузки и перезагрузки (режим Zeitwerk) .

...