Cómo acceder a las URL definidas en un plugin públicamente?

He añadido el siguiente código en el archivo plugin.rb.

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

Puedo usar la URL “ratings” que es /rating/getratings en una llamada AJAX. Pero cuando uso esta URL con el nombre de dominio t2.metastudio.org, por ejemplo https://t2.metastudio.org/rating/getratings, Discourse dice:

¡Vaya! Esa página no existe o tal vez debas iniciar sesión para verla.

Por ejemplo, puedo acceder a los datos de categorías usando la siguiente URL, que es https://t2.metastudio.org/categories.json. De manera similar, quiero acceder a las URLs de get del plugin.

¿Podrías decirme cómo definir las URLs en un plugin que sean accesibles públicamente?

1 me gusta

Básicamente, necesitas investigar cómo funcionan las rutas y los motores de Rails. Las rutas mapean las URLs con las acciones de los controladores de Rails. También consulta esta guía. Es mi tutorial favorito de Discourse. How to create a Discourse plugin – kleinfreund.de

1 me gusta

Puedo acceder a la nueva URL GET definida: “/getbadges” => “categories#getBadges”

Definí la URL GET get “/getbadges” => “categories#getBadges” en el archivo routes.rb

y el siguiente método getBadges en el archivo categories_controller.rb:

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

Ejecuté una instancia local de Discourse e intenté acceder a la URL GET definida: http://localhost:9292/getbadges.
SÍ puedo acceder a esta URL GET, pero hice lo mismo en el plugin GitHub - siddhudhangar/discourse-ratings · GitHub y allí no funciona. ¿Puedes ayudarme a resolver este problema?

A continuación, te proporciono mi URL de GitHub; allí puedes revisar mi código y decirme si cometí algún error:

Puedo acceder a todas las URL GET que definí en el complemento. El problema está resuelto ahora. Gracias.