Anular campo personalizado

create-account.hbs

{{#if userFields}}

            <div class='user-fields'>

              {{#each userFields as |f|}}

                {{user-field field=f.field value=f.value}}

              {{/each}}

            </div>

          {{/if}}

js

var siteSettings = Discourse.SiteSettings;
    console.log(siteSettings.forum_name);

complete = $(".user-field-" + siteSettings.forum_name);

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/controllers/create-account.js.es6#L239-L245

¿Cómo verificar el campo?

{{#if (eq f.field.name complete)}}  {{! no funciona }}
  OK
{{/if}}

establecer entrada para create-account.hbs

 var siteSettings = Discourse.SiteSettings;
          $('.control-label').each( function () {
  if($(this).text().trim() === siteSettings.forum_name) {
  const uuid ='lp'+(()=>([1e7]+-1e11).replace(/[018]/g,c=>(c^crypto.getRandomValues(new Uint8Array(1))[0]&15 >> c/4).toString(16)))();
var id = "user-" + $(this).parent().attr('id');
    var input = $('#' + id);
    input.val(uuid);
   // $(this).parent().hide()
  
    }
})

Se ve así

Rails.logger.warn(“#{params }”)
Se ve así

"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}

“2”=>“”
¿dónde está el segundo campo?

Esto no funciona porque no puedes realizar el cálculo lógico real en una plantilla. Esto debe manejarse en el js correspondiente mediante una propiedad computada. Asegúrate de leer las guías oficiales de Ember (asegurándote de seleccionar la misma versión que usa Discourse) y examina el código en uno de los muchos populares #plugin aquí para que te proporcione ejemplos.

gracias por la respuesta, estoy interesado en ejemplos de plugins

Aquí tienes un ejemplo de una propiedad calculada de un PR que envié recientemente al excelente plugin National Flags de Ebsy: discourse-nationalflags/assets/javascripts/discourse/components/user-nationalflags-preferences.js.es6 at master · Ebsy/discourse-nationalflags · GitHub

Aquí tienes uno (“showTimezones”) que se usa realmente para mostrar/ocultar en una plantilla: https://github.com/paviliondev/discourse-team-timezones/blob/master/assets/javascripts/discourse/components/team-display.js.es6

Pero encontrarás toneladas de patrones geniales en nuestros plugins: Pavilion · GitHub

Hola, he descubierto cómo sobrescribir la acción en los controladores.

Ejemplo

import CreateAccount from 'discourse/controllers/create-account';
export default {

    name: 'Create-Account-Popup',
    initialize: function () {
        CreateAccount.reopen({
            actions: {
                createAccount() {
// mi código
                }
            }
        });
}

¿Cómo añadir tu @discourseComputed?

Lo hago como en el ejemplo y no funciona

export default {
    name: 'Create-Account-Popup',
    
    @discourseComputed()
    ldapForgotPassword() {
        console.log('¡olvidado!!');
        return this.siteSettings.forum_login_popup_use_ldap;
    },

Ocurrió a través de @computed

        PreferencesAccount.reopen({
            @computed
            ldapForgotPassword() {
                console.log('¡olvidado!!');
                return this.siteSettings.forum_login_popup_use_ldap;
            },

Deberías usar esto para evitar una advertencia del navegador.

Es simplemente una importación diferente:

import discourseComputed from "discourse-common/utils/decorators";