我在 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 个赞
fzngagan
(Faizaan Gagan)
2
基本上,你需要了解 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 网址了。问题已解决,谢谢。