Ich habe untenstehenden Code in die Datei plugin.rb eingefügt.
DiscourseRatings::Engine.routes.draw do
post "/rate" => "rating#rate"
post "/remove" => "rating#remove"
get '/getratings' => 'rating#getRatings'
end
Ich kann die URL „ratings“ (/rating/getratings) in einem AJAX-Aufruf verwenden. Wenn ich diese URL jedoch mit der Domain t2.metastudio.org verwende, also z. B. https://t2.metastudio.org/rating/getratings, meldet Discourse:
Oops! Diese Seite existiert nicht oder Sie müssen sich möglicherweise anmelden, um sie sehen zu können!
Zum Beispiel kann ich auf Kategoriedaten über die folgende URL zugreifen: https://t2.metastudio.org/categories.json. Auf ähnliche Weise möchte ich auf die öffentlichen URLs meines Plugins zugreifen.
Können Sie mir erklären, wie man URLs in einem Plugin so definiert, dass sie öffentlich zugänglich sind?
Grundsätzlich musst du nachschauen, wie Rails-Routes und Engines funktionieren. Routes ordnen URLs den Aktionen von Rails-Controllern zu. Schau dir außerdem diesen Leitfaden an. Es ist mein Lieblings-Tutorial zu Discourse. How to create a Discourse plugin – kleinfreund.de
Ich habe die GET-URL get “/getbadges” => “categories#getBadges” in der Datei routes.rb definiert.
Und unten die Methode getBadges in der Datei categories_controller.rb:
def getBadges
json_data = {"name":"siddhu"}
render json: json_data
end
Ich habe eine lokale Discourse-Instanz ausgeführt und versucht, auf die definierte GET-URL http://localhost:9292/getbadges zuzugreifen.
Ich kann auf diese GET-URL zugreifen, aber das Gleiche habe ich im Plugin GitHub - siddhudhangar/discourse-ratings · GitHub versucht. Dort funktioniert es nicht. Können Sie mir helfen, dieses Problem zu lösen?
Unten habe ich meine GitHub-URL angegeben. Dort können Sie meinen Code überprüfen und mir mitteilen, ob ich Fehler gemacht habe.