如何点击按钮时执行服务器端代码?

我该如何实现类似这样的功能:
当我点击一个自定义按钮时,我想运行一些服务器端代码。

例如,点击一个按钮我想运行文件 Jobs/Secheduled/test_job.rb

或者,当有人访问 URL admin/plugins/my-plugin 时,我能否运行此文件中的代码?

我是 Discourse 插件开发的初学者,并且在做类似这样的事情时遇到了很多困难,任何帮助都将不胜感激。

那么,您需要向运行该代码的终结点发出 Ajax 请求。

您能多说一些关于您希望在服务器端发生什么吗?

我想执行文件 Jobs/Secheduled/test_job.rb 中的代码。

或者,你可以说我想运行一个 cron 作业。

你能给我一个如何发送 ajax 请求到某个端点并执行该文件中的代码的示例代码吗?

你还在描述你的解决方案,而不是你正在解决的问题。你想在那个文件里做什么?可能有更好的方法来触发它。了解这一点也将更容易提出类似的建议。

订阅插件会添加一个端点,所以你可以看看它。你需要在 Rails 中添加一个路由,然后在 Ember 中为你的按钮添加一个动作来调用它。

我有一个用户,他发布了大量的帖子。我想删除该用户的所有帖子,但默认的“删除所有帖子”按钮会返回 503 错误。因此,我编写了一段代码,安排了一个每 2 分钟运行一次的 cron 作业,一次删除 100 篇帖子。

只需在 rails 控制台中运行它,不要编写插件。

3 个赞

请使用语言功能,并按照 @pfaffman 的建议进行操作。编写一个定制的前端钩子来实现这一点实在是小题大做。

参见:ActiveRecord::Batches

我不熟悉 Rails。你能给我展示一下删除该用户帖子的命令吗?

1 个赞

您可以尝试搜索 PostDestroyer

是的,你是,但网站上有很多这样的用户。我的客户不懂技术,他会怎么做?我需要按照客户的要求编写一个插件。

而且这个问题也可能出现在其他论坛网站上。我们确实需要看看我遇到的问题。我们可以在未来的更新中改进默认的删除帖子功能。

13 篇帖子已合并到现有主题:尝试删除特定用户创建的主题时出现 502 错误