Je pense que ce qui vous manque, c’est de l’ajouter au routage de Rails.
Quelque chose comme ceci dans plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
Voici un début. L’autre chose à faire est de regarder GitHub - discourse/all-the-plugins et de parcourir ce qu’il contient. Maintenant que tant de choses ont été ajoutées au cœur, je suppose que vous pourriez simplement y chercher des exemples d’ajout au routage Rails.
Routage personnalisé minimal pour un plugin Discourse
IA
pfaffman:
Qu’est-il nécessaire pour ajouter une route à Discourse rails ?
Pouvez-vous me donner une preuve de concept minimale qui inclut un plugin.rb, un contrôleur et les éléments nécessaires pour ajouter la route à rails ?
DiscourseHelper:
Recherche
Recherche de : Comment ajouter une route personnalisée à Discourse à l'aide d'un plugin, y compris un exemple minimal avec plugin.rb, un contrôleur personnalisé et le code nécessaire pour enregistrer la route Rails ?
Lecture
Lecture : Développement de plugins Discourse - Partie 1 - Créer un plugin de base
Recherche
Recherche de : Preuve de concept minimale pour l'ajout d'une route Rails personnalisée dans un plugin Discourse, y compris plugin.rb, l'implémentation du contrôleur et le code pour enregistrer la route.
Lecture
Lecture : Création de routes dans Discourse et affichage de données
Lecture
Lecture : Ajouter des routes utilisateur personnalisées à l'aide de plugins
Lecture
Lecture : Ajouter un contrôleur ruby via un plugin
Voici une preuve de concept minimale pour ajouter une route Rails personnalisée à Discourse via un plugin, y compris les fichiers clés dont vous aurez besoin : plugin.rb, un contrôleur et le code pour enregistrer la route.
Points clés
- La meilleure pratique consiste à utiliser un "moteur" Rails au sein de votre plugin pour isoler vos contrôleurs et vos routes.
- Vous devez explicitement inclure votre contrôleur dans
plugin.rb.
- Pour enregistrer une nouvelle route, vous utilisez la méthode
routes.draw du moteur et montez le moteur dans les routes principales de l’application.
Exemple minimal
plugin.rb
# name: my-custom-route
# about: Ajoute une route personnalisée via un moteur Rails dans un plugin
# version: 0.1
# authors: Votre Nom
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
Comment cela fonctionne :
GET /my_plugin/hello renverra la réponse texte brut "Hello from my plugin!".
Structure de répertoire requise :
plugins/
my-custom-route/
plugin.rb
app/
controllers/
my_plugin/
my_controller.rb
Pour plus de détails et des exemples étendus, consultez :
Cette preuve de concept vous aidera à ajouter un point d’accès personnalisé simple à votre instance Discourse via un plugin. Si vous avez des questions sur l’intégration de cela avec le côté Ember/JS, faites-le moi savoir !