Añadiendo un formulario a un plugin

Estoy intentando crear un plugin simple que

  • añade un formulario encima de la línea de tiempo del tema
  • envía la dirección de correo electrónico que el usuario introduce a un controlador

El formulario se muestra encima de la línea de tiempo, pero cuando introduzco un correo electrónico y hago clic en el botón de enviar, obtengo este error en la consola del navegador:

DEBUG: -------------------------------
vendor.js:49192 DEBUG: Ember  : 3.15.0
vendor.js:49192 DEBUG: jQuery : 3.6.0
vendor.js:49192 DEBUG: -------------------------------
vendor.js:4180 [Violation] 'setTimeout' handler took 489ms
[Violation] Forced reflow while executing JavaScript took 35ms
vendor.js:49192 DEBUG: For more advanced debugging, install the Ember Inspector from https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi
user-presence.js:77 [Violation] 'setInterval' handler took 51ms
vendor.js:49170 Uncaught Error: Assertion Failed: <@ember/component:ember716> had no action handler for: lonerWatch
    at assert (vendor.js:49170)
    at Class.send (vendor.js:44642)
    at Class.superWrapper [as send] (vendor.js:43919)
    at Class.send (plugin-connector.js:75)
    at Class.superWrapper [as send] (vendor.js:43919)
    at vendor.js:22103
    at instrument (vendor.js:50635)
    at vendor.js:22102
    at Backburner._run (vendor.js:67048)
    at Backburner._join (vendor.js:67024)

El código (actualmente incompleto) es:

/assets/javascripts/discourse/templates/connectors/topic-navigation/loner-watch-topic-form.hbs

<form {{action 'lonerWatch' on='submit'}}>
    <p>Introduce tu dirección de correo electrónico para recibir notificaciones sobre este tema</p>
    <input name="email" placeholder="Tu correo electrónico"/>
    <button>Vigilar</button>
</form>

/assets/javascripts/discourse/controllers/loner-watch-topic-form.js.es6

export default Ember.Controller.extend({
    actions: {
      lonerWatch(content) {
        console.log(content);
      }
    }
  });

/controllers/loners_controller.rb

class LonersController < ApplicationController
   [...]
    # Vigilar tema como usuario provisional
    def watch
      user = ensure_user
      topic = Topic.find(params[:topic_id].to_i)
      TopicUser.change(user, topic.id, notification_level: params[:notification_level].to_i)
    end
  end

Estoy seguro de que me falta algo simple, pero no lo veo. Cualquier ayuda es bienvenida.

Acabo de notar que /assets/javascripts/discourse/controllers debería ser /assets/javascripts/discourse/components. Desafortunadamente, sigo recibiendo el mismo error.

Estoy perplejo. ¿Alguien tiene alguna idea de lo que estoy haciendo mal aquí?

La plantilla del conector y el archivo JS deben estar en el mismo directorio y tener el mismo nombre. Así:

/assets/javascripts/discourse/connectors/topic-navigation/loner-watch-topic-form.hbs

<form {{action 'lonerWatch' content on='submit'}}>    
    <p>Introduce tu dirección de correo electrónico para recibir notificaciones de este tema</p>
    <input name="email" placeholder="Tu correo electrónico"/>
    <button>Observar</button>
</form>

y

/assets/javascripts/discourse/connectors/topic-navigation/loner-watch-topic-form.js

export default {
  actions: {
    lonerWatch(content) {
      console.log(content);
    },
  },
};

Tu acción debería funcionar entonces. Puedes leer un poco más aquí si estás interesado.

Gracias por la respuesta. Ya funciona. Parece que tenía varias cosas mal, pero lo peor fue usar erróneamente Ember.Controller.extend cuando no era necesario.