Comment accéder publiquement aux URL définies dans un plugin ?

J’ai ajouté le code ci-dessous dans le fichier plugin.rb.

  DiscourseRatings::Engine.routes.draw do
    post "/rate" => "rating#rate"
    post "/remove" => "rating#remove"
    get '/getratings' => 'rating#getRatings'
  end

Je parviens à utiliser l’URL « ratings » (/rating/getratings) dans un appel AJAX. Cependant, lorsque j’utilise cette URL avec le nom de domaine t2.metastudio.org, par exemple https://t2.metastudio.org/rating/getratings, Discourse affiche :

Oups ! Cette page n’existe pas ou vous devez peut-être vous connecter pour la voir !

Par exemple, je peux accéder aux données des catégories en utilisant l’URL suivante : https://t2.metastudio.org/categories.json. De même, je souhaite accéder aux URLs de mon plugin.

Pourriez-vous m’indiquer comment définir des URLs dans un plugin qui soient accessibles publiquement ?

1 « J'aime »

En gros, vous devez vous renseigner sur le fonctionnement des routes et des moteurs dans Rails. Les routes associent les URLs aux actions des contrôleurs Rails. Consultez également ce guide. C’est mon tutoriel Discourse préféré. How to create a Discourse plugin – kleinfreund.de

1 « J'aime »

Je peux accéder à la nouvelle URL GET définie : “/getbadges” => “categories#getBadges”

J’ai défini l’URL GET “/getbadges” => “categories#getBadges” dans le fichier routes.rb.

Voici également la méthode getBadges dans le fichier categories_controller.rb :

def getBadges
	json_data = {"name":"siddhu"}
	render json: json_data
end

J’ai lancé une instance locale de Discourse et j’ai essayé d’accéder à l’URL GET définie : http://localhost:9292/getbadges.
Je peux accéder à cette URL GET, mais lorsque j’ai fait la même chose dans le plugin GitHub - siddhudhangar/discourse-ratings · GitHub, cela ne fonctionne pas. Pouvez-vous m’aider à résoudre ce problème ?

Ci-dessous, je vous ai fourni mon URL GitHub. Vous pouvez y vérifier mon code et me dire si j’ai fait des erreurs.

Je peux accéder à toutes les URL GET que j’ai définies dans le plugin. Le problème est maintenant résolu. Merci.