Hinzufügen neuer Controller und Routen zum Discourse-Subscriptions-Plugin

Hallo,
Ich brauche Hilfe, ich bin es gewohnt, Fullstack-Anwendungen zu erstellen, aber was Ember und Rails angeht, bin ich noch Anfänger.

Ich möchte eine weitere Zahlungsmethode (Banküberweisung) zum discourse-subscriptions-Plugin hinzufügen. Ich habe es bereits geschafft, einige neue Routen zu erstellen und einige Funktionen hinzuzufügen, aber ich habe Schwierigkeiten, einen neuen Controller zum Verzeichnis /discourse_subscriptions/ controllers hinzuzufügen und ihn richtig zum Laufen zu bringen.

Ich möchte einen Ruby-Controller einrichten, der als Server fungiert, und eine Ember-Vorlage als meinen Client. Die Struktur sieht wie folgt aus:

Nachdem die Zahlungseinheit erstellt wurde, muss der payment_intent-Controller die notwendigen Zahlungshinweise an den Client zurückgeben.
Weitere Details: Stripe - Banküberweisungen akzeptieren

Ich habe bereits neue Seiten erstellt, indem ich Methoden in der Datei subscribe_controller.rb im Ordner discourse_subscriptions/ controller hinzugefügt habe, aber wenn ich versuche, einen weiteren Controller (den Server) zu erstellen, funktioniert er nicht, es wird ein 404-Fehler angezeigt. Im Ember Inspector sehe ich jedoch, dass die Route tatsächlich existiert (ja, das ist wirklich verwirrend).

Hinweis: Ich habe alle entsprechenden Routen und ihre Methodentypen in den Dateien route.rb und subscriptions-route-map.js erstellt.

Ich habe einen Ruby payment_intent-Controller und eine entsprechende Route erstellt. Der Controller soll eine POST-Anfrage vom Client empfangen und basierend auf den mit der POST-Anfrage empfangenen Daten eine Stripe-Zahlungseinheit generieren. Nachdem die Zahlungseinheit erstellt wurde, soll sie die notwendigen Zahlungshinweise an den Client zurückgeben.
Auf der Client-Seite habe ich ein kleines Formular mit einem Submit-Button.

Ich kann die Kommunikation zwischen diesem Controller und der Client-Seite (Server-Client) nicht herstellen. Die Tatsache, dass es zwei Controller (Rails und Ember) gibt, ist etwas verwirrend.

3 „Gefällt mir“

Großartiger Fortschritt. Als Ihr erster Ausflug in die Entwicklung von Discourse-Plugins ist dies definitiv ehrgeizig. Der Vorteil dabei ist das Gefühl der Errungenschaft und des Nutzens, das Sie erhalten werden, sobald Sie dies zum Laufen gebracht haben. Das Risiko, das Sie hier eingehen, ist, dass Sie so viel auf einmal in Angriff nehmen, dass es Sie davon abhalten könnte, weiter an der Plattform zu arbeiten. Die Ember/Rails-Kombination ist anfangs viel zu bewältigen, machen Sie weiter!

Einige Tipps für den Moment:

  • Gehen Sie die Dinge in Abschnitten an.
  • Das Pushen des Forks auf GitHub und das anschließende Verlinken von Codeabschnitten hier könnte der Community helfen, Ihre Arbeit klarer zu sehen.
  • Machen Sie sich zuerst Sorgen um die Daten, die von Ihrem Rails-Controller kommen. Überprüfen Sie dies, indem Sie die Rails-Route mit .json am Ende der http-Adresse ansprechen, um die Rohdaten zu sehen, die an den Client übergeben werden. Das wird die Rails-Seite des GET beweisen.
  • Betrachten Sie den Ember Controller als das Modul zur Handhabung von „In-Interface-Aktionen“ und Dingen, die möglicherweise zurück an das Backend geschoben werden müssen (Sie können Aktionen auch in Routen behandeln, aber das ist eine andere Geschichte! :D).
  • Der Ember Router verbindet das Backend mit dem Rest des Frontends und richtet das Modell für die Vorlage, seine Komponenten und/oder den Controller ein, damit diese es nutzen können.
  • Nutzen Sie Vorbilder. Gehen Sie alle offiziellen und Pavilion-Plugins auf GitHub durch, um zu sehen, wie Dinge für ähnliche Aktionen/Zwecke gemacht werden. Es ist alles Open Source, nutzen Sie es, kopieren Sie es, folgen Sie den Konventionen (insbesondere denen im Discourse-Kern)! :slight_smile:
4 „Gefällt mir“

Danke, ich werde Ihren Rat befolgen und Sie auf dem Laufenden halten :slightly_smiling_face:

1 „Gefällt mir“

Ich habe alles, was ich gestern getan habe, gelöscht und wieder bei Null angefangen. Lassen Sie mich Ihnen zeigen, was ich bisher getan habe und welche Probleme ich derzeit habe. Im Moment kümmere ich mich nicht wirklich um die Bearbeitung der /locales .yml-Dateien, ich habe den gesamten Text fest codiert, und ich habe mich auch entschieden, klassisches HTML anstelle von Handlebars zu verwenden (ich werde darauf zurückkommen, sobald ich etwas habe, das funktioniert)

  1. Ich habe die Option Banküberweisung hinzugefügt
../discourse-subscriptions/assets/javascripts/discourse/templates/subscribe/show.hbs

      <h3>Banküberweisung</h3>
      <form action="/payment_intent" method="post">
       <!-- einige Daten-->
        <input type="submit" value="Weiter" class="btn btn-primary ">
      </form>
  1. Ich habe einen payment_intent-Controller erstellt
    ../discourse-subscriptions/app/controllers/discourse_subscriptions/payment_intents_controller.rb
module DiscourseSubscriptions
    class PaymentIntentsController < ::ApplicationController
      include DiscourseSubscriptions::Stripe
      include DiscourseSubscriptions::Group
      before_action :set_api_key
      requires_login except: [:index, :contributors, :show]

      def create
        params.require([:source, :plan])
        begin
          #customer = find_or_create_customer(params[:source])
          # Erstelle eine Test-Payment-Intent
          bk_payment_intent = Stripe::PaymentIntent.create({
            amount: 1099,
            currency: 'eur'
          })

          render json: payment_intent
        end
    end
end
  1. Es ist die Route
    ../discourse-subscriptions/config/routes.rb
 resources :payment_intents, only: %i[create]

Aber wenn ich das Projekt ausführe und zum Ember Inspector gehe, sagt er mir, dass die Route nicht existiert

Und danach, wie wäre der beste Weg, die Formularübermittlung zu handhaben? Soll ich einen weiteren Ember-Controller erstellen, den subscribe-show.js-Controller verwenden oder ein Skript-Tag in subscribe/show.hbs hinzufügen?

Sie benötigen eine Ember-Route für diesen Bildschirm und einen Ember-Controller. Ich sehe hier keine, also “eine weitere”?

Schauen Sie sich unbedingt an:

Ember.js Guides - Anleitungen und Tutorials - Ember Guides (emberjs.com)

Und werfen Sie einen Blick auf den Code für die Bildschirme mit den Benutzereinstellungen, die eine grundlegende Reihe von Formularen darstellen.

2 „Gefällt mir“

Ok. Danke für Ihre Antwort