按下插件中的按钮后获取文本框数据

听起来您想创建一个 Ruby API 供 JS 调用。例如,Data Explorer 插件在 Ruby 端实现了一个具有管理员权限范围的用户输入 API。

Data Explorer 的 JS 部分比较复杂,因此我将提供一个简化的示例,说明您可能需要什么。

import { ajax } from "discourse/lib/ajax";

...
  @action
  sendTextboxData() {
    ajax("/endpoint", {
        type: "POST",
        data: {
          key: "value"
        },
    }).then((result) => {
        // do something with the result
    };
  }

您可以使用原生的 JS fetch() 来完成同样的事情,但 Discourse 提供的 ajax() 函数似乎在后台处理了一些小问题。

如果您的 Ruby 代码足够精简,您可能可以将其完全放入控制器的一个文件中。否则,您可以根据需要进行组织。