Como acessar URLs definidas em um plugin publicamente?

Adicionei o código abaixo no arquivo plugin.rb.

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

Consegui usar a URL “ratings”, que é /rating/getratings, em uma chamada AJAX. No entanto, quando uso essa URL com o nome de domínio t2.metastudio.org, por exemplo https://t2.metastudio.org/rating/getratings, o Discourse exibe:

Oops! Essa página não existe ou você pode precisar fazer login para vê-la!

Por exemplo, consigo acessar os dados de categorias usando a seguinte URL: https://t2.metastudio.org/categories.json.
Da mesma forma, gostaria de acessar as URLs de get do plugin.

Você poderia me dizer como definir URLs em um plugin que sejam acessíveis publicamente?"

1 curtida

Basicamente, você precisa pesquisar como as rotas e engines do Rails funcionam. As rotas mapeiam as URLs para as ações dos controladores do Rails. Consulte também este guia. É meu tutorial favorito sobre Discourse. How to create a Discourse plugin – kleinfreund.de

1 curtida

Consigo acessar a nova URL GET definida, que é /getbadges => categories#getBadges

Defini a URL GET /getbadges => categories#getBadges no arquivo routes.rb.

E abaixo está o método getBadges no arquivo categories_controller.rb:

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

Executei uma instância local do Discourse e tentei acessar a URL GET definida: http://localhost:9292/getbadges.
Consegui acessar essa URL, mas quando fiz o mesmo no plugin GitHub - siddhudhangar/discourse-ratings · GitHub, não funcionou. Pode me ajudar a resolver esse problema?

Abaixo, deixei minha URL do GitHub, onde você pode verificar meu código e me informar se cometi algum erro:

Consegui acessar todas as URLs GET que defini no plugin. O problema foi resolvido agora. Obrigado.