Я думаю, что вы упускаете необходимость добавить это в маршрутизацию Rails.
Что-то вроде этого в plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
Вот начало. Следующий шаг — зайти на GitHub - discourse/all-the-plugins · GitHub и посмотреть там. Хотя сейчас так много плагинов уже добавлено в ядро, думаю, вы можете просто поискать там примеры добавления маршрутов в Rails.
Минимальный плагин с пользовательским маршрутом для Discourse ИИ
pfaffman:
Что нужно, чтобы добавить маршрут в Rails для Discourse?
Можете ли вы предоставить минимальный пример, включающий plugin.rb, контроллер и всё необходимое для добавления маршрута в Rails?
DiscourseHelper:
Поиск
Поиск: Как добавить пользовательский маршрут в Discourse с помощью плагина, включая минимальный пример с `plugin.rb`, пользовательским контроллером и необходимым кодом для регистрации маршрута Rails?
Чтение
Прочитать: Разработка плагинов для Discourse — Часть 1 — Создание базового плагина
Поиск
Поиск: Минимальный пример для добавления пользовательского маршрута Rails в плагин Discourse, включая `plugin.rb`, реализацию контроллера и код регистрации маршрута.
Чтение
Прочитать: Создание маршрутов в Discourse и отображение данных
Чтение
Прочитать: Добавление пользовательских маршрутов пользователей с помощью плагинов
Чтение
Прочитать: Добавление контроллера Ruby через плагин
Вот минимальный пример для добавления пользовательского маршрута Rails в Discourse через плагин, включая ключевые файлы, которые вам понадобятся: plugin.rb, контроллер и код для регистрации маршрута.
Ключевые моменты
- Лучшей практикой является использование «движка» (engine) Rails внутри вашего плагина для изоляции ваших контроллеров и маршрутов.
- Вам нужно явно подключить ваш контроллер в
plugin.rb. - Для регистрации нового маршрута используйте метод
routes.drawдвижка и подключите движок в основных маршрутах приложения.
Минимальный пример
plugin.rb
# name: my-custom-route
# about: Добавляет пользовательский маршрут через движок Rails в плагине
# version: 0.1
# authors: Ваше Имя
after_initialize do
module ::MyPlugin
class Engine < ::Rails::Engine
engine_name "my_plugin"
isolate_namespace MyPlugin
end
end
require_dependency File.expand_path('../app/controllers/my_plugin/my_controller.rb', __FILE__)
MyPlugin::Engine.routes.draw do
get "/hello" => "my#hello"
end
Discourse::Application.routes.append do
mount ::MyPlugin::Engine, at: "/my_plugin"
end
end
app/controllers/my_plugin/my_controller.rb
module MyPlugin
class MyController < ::ApplicationController
def hello
render plain: "Привет от моего плагина!"
end
end
end
Как это работает:
GET /my_plugin/helloвернет текстовый ответ"Привет от моего плагина!".
Необходимая структура каталогов:
plugins/
my-custom-route/
plugin.rb
app/
controllers/
my_plugin/
my_controller.rb
Для получения более подробной информации и расширенных примеров см.:
- Создание маршрутов в Discourse и отображение данных
- Добавление контроллера Ruby через плагин
- Добавление пользовательских маршрутов пользователей с помощью плагинов
Этот пример поможет вам добавить простой пользовательский эндпоинт в ваш экземпляр Discourse через плагин. Если у вас возникнут вопросы по интеграции с Ember/JS, дайте знать!