Penso che la cosa che ti manca sia aggiungerlo al routing di Rails.
Qualcosa del genere in plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
Ecco un inizio. L’altra cosa da fare è andare su GitHub - discourse/all-the-plugins e dare un’occhiata. Ora che molti sono stati aggiunti al core, suppongo che potresti semplicemente guardare lì per esempi di aggiunte al route di Rails.
Minimal Custom Route Plugin for Discourse
AI
pfaffman:
cosa serve per aggiungere una route a Discourse rails?
Puoi darmi una prova di concetto minima che includa un plugin.rb, un controller e le cose necessarie per aggiungere la route a rails?
DiscourseHelper:
Ricerca
Ricerca per: Come aggiungere una route personalizzata a Discourse tramite un plugin, incluso un esempio minimo con plugin.rb, controller personalizzato e il codice necessario per registrare la route Rails?
Lettura
Letto: Sviluppare plugin Discourse - Parte 1 - Creare un plugin di base
Ricerca
Ricerca per: Prova di concetto minima per l'aggiunta di una route Rails personalizzata in un plugin Discourse, inclusi plugin.rb, implementazione del controller e codice per registrare la route.
Lettura
Letto: Creare route in Discourse e mostrare dati
Lettura
Letto: Aggiungere route utente personalizzate tramite plugin
Lettura
Letto: Aggiungere un controller ruby tramite plugin
Ecco una prova di concetto minima per aggiungere una route Rails personalizzata a Discourse tramite un plugin, inclusi i file chiave di cui avrai bisogno: plugin.rb, un controller e il codice per la registrazione della route.
Punti chiave
- La best practice è utilizzare un “engine” Rails all’interno del tuo plugin per isolare i tuoi controller e le tue route.
- Devi richiedere esplicitamente il tuo controller in
plugin.rb.
- Per registrare una nuova route, utilizzi il metodo
routes.draw dell’engine e monti l’engine nelle route principali dell’applicazione.
Esempio minimo
plugin.rb
# name: my-custom-route
# about: Aggiunge una route personalizzata tramite engine Rails in un plugin
# version: 0.1
# authors: Your Name
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: "Hello from my plugin!"
end
end
end
Come funziona:
GET /my_plugin/hello restituirà la risposta in testo semplice "Hello from my plugin!".
Struttura delle directory richiesta:
plugins/
my-custom-route/
plugin.rb
app/
controllers/
my_plugin/
my_controller.rb
Per maggiori dettagli ed esempi ampliati, vedi:
Questa prova di concetto ti aiuterà ad aggiungere un semplice endpoint personalizzato alla tua istanza Discourse tramite un plugin. Se hai domande sull’integrazione di questo con il lato Ember/JS, fammelo sapere!