Похоже, вы ищете способ создать API на Ruby, к которому сможет обращаться JavaScript. Примером может служить плагин Data Explorer, который реализует API для ввода данных пользователем с правами администратора на стороне Ruby.
JavaScript-код для Data Explorer довольно объёмный, поэтому я приведу упрощённый пример того, что вам, скорее всего, понадобится.
import { ajax } from "discourse/lib/ajax";
...
@action
sendTextboxData() {
ajax("/endpoint", {
type: "POST",
data: {
key: "value"
},
}).then((result) => {
// сделайте что-то с результатом
};
}
То же самое можно сделать с помощью нативного JS fetch(), но функция ajax(), предоставляемая Discourse, обрабатывает несколько незначительных деталей под капотом.
Если ваш код на Ruby достаточно прост, вы, вероятно, сможете разместить его полностью в одном файле контроллера. В противном случае вы можете организовать его так, как вам удобно.