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 ?
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
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.