Controladores y Rutas

Creo que lo que te falta es añadirlo al enrutamiento de Rails.

Algo como esto en plugin.rb.

  JbTest::Engine.routes.draw do
    get "/hello" => "jbtest#index"
  end

Aquí tienes un comienzo. La otra cosa que debes hacer es ir a GitHub - discourse/all-the-plugins y mirar allí. Sin embargo, ahora que tantos se han añadido al núcleo, supongo que podrías mirar allí para ver ejemplos de cómo se añaden a la ruta de Rails.

Ruta de plugin personalizada mínima para DiscourseAI

pfaffman:

¿Qué se necesita para añadir una ruta a Discourse rails?

¿Puedes darme una prueba de concepto mínima que incluya un plugin.rb, un controlador y las cosas necesarias para añadir la ruta a rails?

DiscourseHelper:

Buscando

Buscando: Cómo añadir una ruta personalizada a Discourse usando un plugin, incluyendo un ejemplo mínimo con plugin.rb, controlador personalizado y el código necesario para registrar la ruta de Rails.

Leyendo

Leído: Desarrollo de plugins de Discourse - Parte 1 - Crear un plugin básico

Buscando

Buscando: Prueba de concepto mínima para añadir una ruta personalizada de Rails en un plugin de Discourse que incluya plugin.rb, implementación del controlador y código para registrar la ruta.

Leyendo

Leído: Creación de rutas en Discourse y visualización de datos

Leyendo

Leído: Añadir rutas de usuario personalizadas usando plugins

Leyendo

Leído: Añadir un controlador ruby a través de un plugin

Aquí tienes una prueba de concepto mínima para añadir una ruta personalizada de Rails a Discourse a través de un plugin, incluyendo los archivos clave que necesitarás: plugin.rb, un controlador y el código para registrar la ruta.

Puntos clave

  • La mejor práctica es utilizar un “engine” de Rails dentro de tu plugin para aislar tus controladores y rutas.
  • Debes requerir explícitamente tu controlador en plugin.rb.
  • Para registrar una nueva ruta, utilizas el método routes.draw del engine y montas el engine en las rutas principales de la aplicación.

Ejemplo mínimo

plugin.rb

# name: my-custom-route
# about: Añade una ruta personalizada a través de un engine de Rails en un plugin
# version: 0.1
# authors: Tu Nombre

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: "¡Hola desde mi plugin!"
    end
  end
end

Cómo funciona:

  • GET /my_plugin/hello devolverá la respuesta de texto plano "¡Hola desde mi plugin!".

Estructura de directorios requerida:

plugins/
  my-custom-route/
    plugin.rb
    app/
      controllers/
        my_plugin/
          my_controller.rb

Para más detalles y ejemplos ampliados, consulta:

Esta prueba de concepto te ayudará a añadir un punto final personalizado simple a tu instancia de Discourse a través de un plugin. Si tienes preguntas sobre cómo integrar esto con el lado de Ember/JS, ¡házmelo saber!

1 me gusta