Да, я понимаю ваше замешательство.
Это можно объяснить немного более четко в руководствах.
Если вы передадите имя модуля в область действия, переданное имя модуля будет иметь префикс для всех модулей в области действия.
Так, например, предполагая, что переданное вами имя модуля равно HelloWeb
,
Когда вы передаете его в область, подобную этой:
scope "/", HelloWeb do
...
get "/", PageController, :index
forward "/jobs", BackgroundJob.Plug
end
маршрут "/"
будет искать HelloWeb.PageController
маршрут "/jobs"
будет искать HelloWeb.BackgroundJob.Plug
Итак, чтобы устранить вашу ошибку, я полагаю, что-то вроде этого:
helloweb.backgroundjob.plug.init/1 is undefined
Вы можете удалить переданное имя модуля из области действия и вручную добавить имена модулей, оставив BackgroundJob.Plug
без изменений следующим образом:
scope "/", do
...
get "/", HelloWeb.PageController, :index
forward "/jobs", BackgroundJob.Plug
end
Или, возможно, сохраните немного повторяющегося набора и добавьте вместо этого область «/ jobs», например:
scope "/", HelloWeb do
...
get "/", PageController, :index
end
scope "/jobs" do
forward "/", BackgroundJob.Plug, name: "Hello Phoenix"
end
Обратите внимание, что ...
в примерах представляет pipe_through
методы и другие маршруты, которые не были необходимы для передачи идеи.
Надеюсь, это поможет.