Wie führe ich serverseitigen Code beim Klicken auf eine Schaltfläche aus?

Wie kann ich etwas tun wie:
Wenn ich auf eine benutzerdefinierte Schaltfläche klicke, möchte ich serverseitigen Code ausführen.

Zum Beispiel möchte ich bei einem Schaltflächenklick die Datei Jobs/Secheduled/test_job.rb ausführen.

Oder kann ich den Code in dieser Datei ausführen, wenn jemand die URL admin/plugins/my-plugin besucht?

Ich bin Anfänger in der Discourse-Plugin-Entwicklung und habe wirklich Schwierigkeiten, so etwas zu tun. Jede Hilfe wird sehr geschätzt.

Dann müssen Sie eine Ajax-Anfrage an einen Endpunkt senden, der diesen Code ausführt.

Können Sie mehr darüber sagen, was auf der Serverseite passieren soll?

Ich möchte den Code in der Datei Jobs/Secheduled/test_job.rb ausführen.

Oder anders ausgedrückt: Ich möchte einen Cron-Job ausführen.

Können Sie mir bitte ein Beispiel für Code zeigen, wie ich eine Ajax-Anfrage an einen Endpunkt stellen und den Code in der Datei ausführen kann?

Sie beschreiben immer noch Ihre Lösung und nicht das Problem, das Sie lösen. Was möchten Sie in dieser Datei tun? Es gibt möglicherweise eine bessere Möglichkeit, sie auszulösen. Wenn Sie das wissen, wird es auch einfacher, etwas Ähnliches vorzuschlagen.

Das Abonnement-Plugin fügt einen Endpunkt hinzu, den Sie sich ansehen könnten. Sie müssen eine Route in Rails hinzufügen und dann in Ember eine Aktion zu Ihrer Schaltfläche hinzufügen, die diese aufruft.

Ich habe einen Benutzer mit einer riesigen Anzahl von Beiträgen. Ich möchte alle Beiträge dieses Benutzers löschen. Der Standard-Button zum Löschen aller Beiträge gibt einen 503-Fehler aus. Deshalb habe ich einen Code geschrieben, der einen Cron-Job plant, der alle 2 Minuten ausgeführt wird und jeweils 100 Beiträge löscht.

Führen Sie es einfach in der Rails-Konsole aus und schreiben Sie kein Plugin.

3 „Gefällt mir“

Verwenden Sie die Sprachfunktionen und tun Sie, was @pfaffman vorschlägt. Das Schreiben eines maßgeschneiderten Frontend-Hooks, um dies zu erreichen, ist wirklich übertrieben.

Siehe: ActiveRecord::Batches

Ich bin mit Rails nicht vertraut. Können Sie mir den Befehl zum Löschen von Beiträgen für diesen Benutzer zeigen?

1 „Gefällt mir“

Sie können versuchen, nach PostDestroyer zu suchen.

Ja, das sind Sie, aber es gibt viele solcher Benutzer auf der Website. Und mein Kunde ist eine nicht-technische Person, wie wird er das tun? Ich muss ein Plugin schreiben, da der Kunde mich dazu drängt.

Außerdem kann das Problem auch auf anderen Foren-Websites auftreten. Wir müssen uns das Problem, mit dem ich konfrontiert bin, wirklich ansehen. Wir können in zukünftigen Updates Verbesserungen an der standardmäßigen Beitrags-Löschfunktion vornehmen.

13 Beiträge wurden in ein bestehendes Thema zusammengeführt: Ich erhalte einen 502-Fehler beim Versuch, von einem bestimmten Benutzer erstellte Themen zu löschen