Sembra che quello che stai cercando sia creare un’API in Ruby che il JS possa chiamare. Un esempio è il plugin Data Explorer, che implementa un’API di input utente con ambito di autorizzazione amministrativa sul lato Ruby.
Il JS per il data explorer è piuttosto corposo, quindi fornirò solo un esempio semplificato di ciò di cui probabilmente avresti bisogno.
import { ajax } from "discourse/lib/ajax";
...
@action
sendTextboxData() {
ajax("/endpoint", {
type: "POST",
data: {
key: "value"
},
}).then((result) => {
// fai qualcosa con il risultato
};
}
Puoi fare la stessa cosa con un fetch() nativo di JS, ma sembra che la funzione ajax() fornita da Discourse gestisca alcune piccole cose a livello di codice.
Se il tuo codice Ruby è abbastanza leggero, puoi probabilmente inserirlo interamente in un unico file per il controller. Altrimenti, puoi organizzarlo come preferisci.