Контроллеры и маршруты

Я думаю, что вы упускаете необходимость добавить это в маршрутизацию 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 через плагин. Если у вас возникнут вопросы по интеграции с Ember/JS, дайте знать!