Wie greife ich öffentlich auf in einem Plugin definierte URLs zu?

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?

1 „Gefällt mir“

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

1 „Gefällt mir“

Ich kann auf die neu definierte GET-URL zugreifen, die “/getbadges” => “categories#getBadges” lautet.

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.

Ich kann auf alle GET-URLs zugreifen, die ich im Plugin definiert habe. Das Problem ist jetzt gelöst. Danke.