Contrôleurs et Routes

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 !

1 « J'aime »