Ciao,
Ho bisogno di aiuto, sono abituato a creare applicazioni fullstack ma per quanto riguarda Ember e Rails sono ancora un principiante.
Voglio aggiungere un altro metodo di pagamento (bonifico bancario) al plugin discourse-subscriptions. Sono già riuscito a creare alcune nuove route e ad aggiungere alcune funzionalità, ma sto lottando per aggiungere un nuovo controller alla directory /discourse_subscriptions/controllers e farlo funzionare correttamente.
Voglio impostare un controller Ruby che funga da server e un template Ember come mio client, la struttura è la seguente:
dopo aver creato l’intento di pagamento, il controller payment_intent deve restituire le necessarie istruzioni di pagamento al client.
maggiori dettagli: Stripe - accept bank transfers
Ho già creato nuove pagine aggiungendo metodi nel file subscribe_controller.rb nella cartella del controller discourse_subscriptions/ ma quando provo a creare un altro controller (il server) non funziona, visualizza un errore 404, tuttavia nell’inspector di Ember vedo che la route esiste effettivamente (sì, è davvero confuso).
NB Ho creato tutte le route corrispondenti e i loro tipi di metodo nei file route.rb e subscriptions-route-map.js.
Ho creato un controller Ruby payment_intent e una route corrispondente, il controller dovrebbe ricevere una richiesta post dal client e generare un intento di pagamento Stripe basato sui dati ricevuti con la richiesta post, dopo che l’intento di pagamento è stato creato dovrebbe restituire le necessarie istruzioni di pagamento al client.
Sul lato client, ho un piccolo form con un pulsante di invio.
Non riesco a stabilire la comunicazione tra questo controller e la pagina client (server-client), il fatto che ci siano due controller (Rails ed Ember) è un po’ confusionario.
3 Mi Piace
Ottimo progresso. Come prima esperienza nello sviluppo di plugin per Discourse, questo è decisamente ambizioso. Il vantaggio è il senso di realizzazione e utilità che otterrai una volta che questo funzionerà. Il rischio è che stai affrontando troppe cose in una volta sola, il che potrebbe scoraggiarti dal continuare a lavorare sulla piattaforma. La combinazione Ember/Rails è molto impegnativa, specialmente all’inizio, continua così!
Alcuni suggerimenti per il momento:
- Affronta le cose a pezzi.
- Pubblicare il fork su GitHub, quindi creare collegamenti permanenti a sezioni di codice qui potrebbe aiutare la community a vedere più chiaramente cosa stai facendo.
- Per prima cosa preoccupati dei dati in ingresso dal tuo controller Rails, controlla questo indirizzando la rotta Rails con
.json alla fine dell’indirizzo http per vedere i dati grezzi che vengono passati al client. Questo verificherà il lato Rails della richiesta GET.
- Pensa al Controller Ember come al modulo per gestire le “azioni nell’interfaccia” e le cose che potrebbero dover essere inviate nuovamente al backend (puoi gestire le azioni anche sulle Route, ma divago! :D)
- Il Router Ember collega il backend al resto del frontend, impostando il modello per il Template, i suoi Componenti e/o Controller da utilizzare.
- Usa l’arte precedente, esamina tutti i plugin ufficiali e di Pavilion su GitHub per vedere come vengono fatte le cose per azioni/scopi simili. È tutto open source, sfruttalo, copialo, segui le convenzioni (specialmente quelle del core di Discourse)!

4 Mi Piace
Grazie, seguirò il tuo consiglio e ti terrò aggiornato 
1 Mi Piace
Ho cancellato tutto quello che ho fatto ieri e sono ripartito da zero. Vi mostrerò cosa ho già fatto finora e i problemi che sto attualmente riscontrando. Per ora non mi interessa davvero modificare i file /locales .yml, ho codificato tutto il testo e ho anche deciso di usare l’html classico invece di handlebar (ci tornerò una volta che avrò qualcosa che funziona)
-
Ho aggiunto l’opzione bonifico bancario
../discourse-subscriptions/assets/javascripts/discourse/templates/subscribe/show.hbs
<h3>Bonifico Bancario</h3>
<form action="/payment_intent" method="post">
<!-- alcuni dati-->
<input type="submit" value="Avanti" class="btn btn-primary ">
</form>
-
Ho creato un controller payment_intent
../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])
# crea un payment intent di test
bk_payment_intent = Stripe::PaymentIntent.create({
amount: 1099,
currency: 'eur'
})
render json: payment_intent
end
end
end
-
È il suo percorso
../discourse-subscriptions/config/routes.rb
resources :payment_intents, only: %i[create]
Ma quando eseguo il progetto e vado nell’ispettore di ember mi dice che il percorso non esiste
E dopo, qual sarebbe il modo migliore per gestire l’invio del modulo? Dovrei creare un altro controller ember, usare il controller subscribe-show.js o aggiungere un tag script all’interno di subscribe/show.hbs?
Hai bisogno di una route Ember per questa schermata e di un controller Ember. Non ne vedo uno qui, quindi “un altro”?
Assicurati di consultare:
Ember.js Guides - Guide e tutorial - Guide Ember (emberjs.com)
E dai un’occhiata al codice per le schermate delle preferenze utente, che è un set di base di moduli.
2 Mi Piace
Ok. grazie per la tua risposta