Получить данные из текстового поля после нажатия кнопки в плагине

Я работаю над своим первым плагином и хочу иметь возможность получать текстовое содержимое текстового поля в панели администратора (часть плагина) после нажатия кнопки. Затем я хочу выполнить некоторые действия с этим содержимым на Ruby. Есть ли способ для фронтенда Ember отправить данные обратно на бэкенд Ruby?
Мой plugin.rb:

# name: Discourse Sample Plugin
# about: A simple plugin to play around with
# version: 1.0.0
# authors: NateDhaliwal 
# url: https://google.com

enabled_site_setting :plugin_enabled

add_admin_route 'sample_page.title', 'sample-page'

Discourse::Application.routes.append do
  get '/admin/plugins/sample-page' => 'admin/plugins#index', constraints: StaffConstraint.new
end

Мой assets/javascripts/discourse/templates/admin/plugin-sample-plugin.hbs:

<div class="textbox">
  <input id="textbox-data" type="text" />
</div>

<div class="buttons">
  <DButton
    @label="sample_page.send"
    @action={{action "sendTextboxData"}}
    @icon="arrow-right"
    @id="send-textbox-data"
  />
</div>

Не уверен, что именно должен делать sendTextboxData.
Мой assets/javascripts/discourse/sample-page-route-map.js:

export default {
  resource: 'admin.adminPlugins',
  path: '/plugins',
  map() {
    this.route('sample-page');
  }
};

Мой assets/javascripts/discourse/controllers/admin-plugins-sample-plugin.js.es6:

import Controller from "@ember/controller";
import { action } from "@ember/object";

export default class AdminPluginsSamplePlugin extends Controller {

  @action
  sendTextboxData() {
    // Как отправить данные?
  }
}

Если мне удастся передать данные на бэкенд Ruby, где мне разместить логику для обработки этих данных? В plugin.rb? Или в каком-то другом файле?

Или, может быть, лучше использовать настройку? Однако мой сценарий использования таков, что текстовое поле не должно сохранять значения каждый раз. Предоставляет ли YAML эту функциональность? Можно ли изменить настройки сайта через Ruby?

Похоже, вы ищете способ создать 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 достаточно прост, вы, вероятно, сможете разместить его полностью в одном файле контроллера. В противном случае вы можете организовать его так, как вам удобно.