如何公开访问插件中定义的 URL?

我在 plugin.rb 文件中添加了以下代码。

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

我可以在 AJAX 调用中使用 get “ratings” URL,即 /rating/getratings。但是,当我使用 t2.metastudio.org 域名访问此 URL(例如 https://t2.metastudio.org/rating/getratings)时,Discourse 提示:

哎呀!该页面不存在,或者您可能需要登录后才能查看!

例如,我可以使用以下 URL 访问分类数据:https://t2.metastudio.org/categories.json
同样,我希望能够访问插件的 GET URL。

请问如何定义插件中可公开访问的 URL?

1 个赞

基本上,你需要了解 Rails 路由和引擎的工作原理。路由将 URL 映射到 Rails 控制器的操作。此外,请参考这份指南。这是我个人最喜欢的 Discourse 教程:How to create a Discourse plugin – kleinfreund.de

1 个赞

我能够访问新定义的 GET 路由 “/getbadges” => “categories#getBadges”

我在 routes.rb 文件中定义了 GET 路由 get “/getbadges” => “categories#getBadges”

并在 categories_controller.rb 文件中定义了下面的 getBadges 方法:

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

我运行了本地的 Discourse 实例,并尝试访问定义的 GET 路由 http://localhost:9292/getbadges。
我可以访问该 GET 路由,但我在 GitHub - siddhudhangar/discourse-ratings · GitHub 插件中做了同样的操作,却无法工作。您能帮我解决这个问题吗?

以下是我的 GitHub 链接,您可以在此检查我的代码,并告知我是否有任何错误。

我现在可以访问插件中定义的所有 GET 网址了。问题已解决,谢谢。