Hola,
Necesito ayuda, estoy acostumbrado a crear aplicaciones fullstack pero en cuanto a Ember y Rails, todavía soy un principiante.
Quiero añadir otro método de pago (transferencia bancaria) al plugin discourse-subscriptions. Ya he conseguido crear algunas rutas nuevas y añadirle algunas funcionalidades, pero me está costando añadir un nuevo controlador al directorio de controladores /discourse_subscriptions/ y hacer que funcione correctamente.
Quiero configurar un controlador Ruby que actúe como servidor y una plantilla Ember como mi cliente, la estructura es la siguiente:
después de crear la intención de pago, el controlador payment_intent debe devolver las instrucciones de pago necesarias al cliente.
más detalles: Stripe - aceptar transferencias bancarias
Ya he creado nuevas páginas añadiendo métodos en el archivo subscribe_controller.rb en la carpeta de controladores /discourse_subscriptions/, pero cuando intento crear otro controlador (el servidor) no funciona, muestra un error 404, sin embargo, en el inspector de Ember veo que la ruta realmente existe (sí, es realmente confuso).
NB He creado todas las rutas correspondientes y sus tipos de método en los archivos route.rb y subscriptions-route-map.js.
He creado un controlador Ruby payment_intent y una ruta correspondiente, el controlador debe recibir una solicitud POST del cliente y generar una intención de pago de Stripe basándose en los datos recibidos con la solicitud POST, después de que se cree la intención de pago, debe devolver las instrucciones de pago necesarias al cliente.
En el lado del cliente, tengo un pequeño formulario con un botón de envío.
No puedo establecer la comunicación entre este controlador y la página del cliente (servidor-cliente), el hecho de que haya dos controladores (Rails y Ember) es un poco confuso.
3 Me gusta
Gran progreso. Como tu primera incursión en el desarrollo de plugins de Discourse, esto es definitivamente ambicioso. La ventaja de eso es la sensación de logro y utilidad que obtendrás una vez que esto funcione. El riesgo que corres aquí es que estás abordando tanto de una vez que podría disuadirte de seguir trabajando en la plataforma. La combinación Ember/Rails es mucho para asumir, especialmente al principio, ¡sigue adelante!
Algunos consejos por ahora:
- Aborda las cosas en partes.
- Subir el fork a GitHub, luego enlazar secciones de código aquí podría ayudar a la comunidad a ver lo que estás haciendo con más claridad.
- Primero preocúpate por los datos que bajan de tu controlador de Rails, compruébalo abordando la ruta de Rails con
.json al final de la dirección http para ver los datos sin procesar que se están pasando al cliente. Eso validará el lado de Rails de la solicitud GET.
- Piensa en el controlador de Ember como el módulo para manejar las “acciones en la interfaz” y cosas que podrían tener que enviarse de vuelta al backend (¡puedes manejar acciones en las rutas también, pero me desvío! :D)
- El enrutador de Ember conecta el backend con el resto del frontend, configurando el modelo para que lo consuman la plantilla, sus componentes y/o el controlador.
- Usa el arte previo, revisa todos los plugins oficiales y de Pavilion en GitHub para ver cómo se hacen las cosas para acciones/propósitos similares. ¡Todo es de código abierto, aprovéchalo, cópialo, sigue las convenciones (especialmente las del núcleo de Discourse)!

4 Me gusta
Gracias, seguiré tu consejo y te mantendré informado 
1 me gusta
He eliminado todo lo que hice ayer y he empezado de cero. Déjame mostrarte lo que he hecho hasta ahora y los problemas que estoy enfrentando actualmente. Por el momento, no me importa realmente editar los archivos /locales .yml, he codificado todo el texto y también he decidido usar HTML clásico en lugar de Handlebars (volveré a esto una vez que tenga algo que funcione).
-
He añadido la opción de transferencia bancaria
../discourse-subscriptions/assets/javascripts/discourse/templates/subscribe/show.hbs
<hr>
<h3>Transferencia bancaria</h3>
<form action="/payment_intent" method="post">
<!-- algunos datos-->
<input type="submit" value="Siguiente" class="btn btn-primary ">
</form>
<hr>
-
He creado un controlador de 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])
# crear un intent de pago de prueba
bk_payment_intent = Stripe::PaymentIntent.create({
amount: 1099,
currency: 'eur'
})
render json: payment_intent
end
end
end
-
Es su ruta
../discourse-subscriptions/config/routes.rb
resources :payment_intents, only: %i[create]
Pero cuando ejecuto el proyecto y voy al inspector de Ember, me dice que la ruta no existe
Y después de eso, ¿cuál sería la mejor manera de manejar el envío del formulario? ¿Debería crear otro controlador de Ember, usar el controlador subscribe-show.js o añadir una etiqueta de script dentro de subscribe/show.hbs?
Necesitas una ruta de Ember para esta pantalla y un controlador de Ember. No veo ninguno aquí, ¿así que “otro”?
Asegúrate de consultar:
Guías de Ember.js - Guías y tutoriales - Guías de Ember (emberjs.com)
Y echa un vistazo al código de las pantallas de preferencias de usuario, que es un conjunto básico de formularios.
2 Me gusta
Ok. Gracias por tu respuesta.