Come eseguire codice lato server al clic di un pulsante?

Come posso fare qualcosa del tipo:
Quando faccio clic su un pulsante personalizzato, voglio eseguire del codice lato server.

Ad esempio, con un clic del pulsante voglio eseguire il file Jobs/Secheduled/test_job.rb

Oppure, posso eseguire il codice all’interno di questo file quando qualcuno visita l’URL admin/plugins/my-plugin.

Sono un principiante nello sviluppo di plugin per Discourse e sto davvero faticando a fare qualcosa del genere. Qualsiasi aiuto sarà molto apprezzato.

Quindi dovrai effettuare una richiesta Ajax a un endpoint che esegue quel codice.

Puoi dire di più su cosa vuoi che accada sul lato server?

Voglio eseguire il codice all’interno del file Jobs/Secheduled/test_job.rb

Oppure, si può dire che voglio eseguire un cron job.

Puoi mostrarmi un esempio di codice su come posso effettuare una richiesta ajax a un endpoint ed eseguire il codice all’interno del file?

Stai ancora descrivendo la tua soluzione e non il problema che stai risolvendo. Cosa vuoi fare in quel file? Potrebbe esserci un modo migliore per attivarla. Saperlo renderà anche più facile suggerire qualcosa di simile.

Il plugin di sottoscrizione aggiunge un endpoint, quindi potresti guardarlo. Dovrai aggiungere una route in Rails e poi in Ember aggiungere un’azione al tuo pulsante che la chiamerà.

Ho un utente con un numero enorme di post. Voglio eliminare tutti i post di quell’utente, ma il pulsante predefinito per eliminare tutti i post restituisce un errore 503. Quindi ho scritto un codice per pianificare un processo cron che viene eseguito ogni 2 minuti ed elimina 100 post alla volta.

Eseguilo semplicemente nella console di Rails e non scrivere un plugin.

3 Mi Piace

Utilizza le funzionalità del linguaggio e fai come suggerisce @pfaffman. Scrivere un hook front-end personalizzato per ottenere questo risultato è decisamente eccessivo.

Vedi: ActiveRecord::Batches

Non ho familiarità con Rails. Puoi mostrarmi il comando per eliminare i post per quell’utente?

1 Mi Piace

Puoi provare a cercare PostDestroyer

Sì, lo sei, ma ci sono molti utenti simili sul sito. E il mio cliente è una persona non tecnica, come farà a capire? Devo scrivere un plugin poiché il cliente mi sta istruendo.

Inoltre, il problema può sorgere anche in altri siti web di forum. Dobbiamo davvero dare un’occhiata al problema che sto riscontrando. Possiamo apportare miglioramenti alla funzionalità predefinita di eliminazione dei post in un futuro aggiornamento.

13 messaggi sono stati uniti a un argomento esistente: I am getting 502 error while trying to delete topics created by specific user