안녕하세요,
도움이 필요합니다. 저는 풀스택 애플리케이션을 만드는 데 익숙하지만, Ember와 Rails는 아직 초보입니다.
discourse-subscriptions 플러그인에 새로운 결제 수단(은행 송금)을 추가하려고 합니다. 이미 몇 가지 새로운 라우트를 만들고 기능을 추가하는 데 성공했지만, /discourse_subscriptions/ 컨트롤러 디렉토리에 새로운 컨트롤러를 추가하여 제대로 작동시키는 데 어려움을 겪고 있습니다.
Ruby 컨트롤러를 서버로, Ember 템플릿을 클라이언트로 설정하려는 구조는 다음과 같습니다:
결제 의도(payment intent)를 생성한 후, payment_intent 컨트롤러는 클라이언트에 필요한 결제 지시를 반환해야 합니다.
자세한 내용: Stripe - 은행 송금 수락
discourse_subscriptions/ 컨트롤러 폴더의 subscribe_controller.rb 파일에 메서드를 추가하여 이미 새로운 페이지를 만들었습니다. 하지만 새로운 컨트롤러(서버)를 만들려고 하면 작동하지 않고 404 오류가 표시됩니다. 그러나 Ember 인스펙터에서는 라우트가 실제로 존재하는 것을 볼 수 있습니다(정말 혼란스럽습니다).
참고: route.rb와 subscriptions-route-map.js 파일에 해당하는 모든 라우트와 메서드 유형을 이미 생성했습니다.
Ruby payment_intent 컨트롤러와 그에 해당하는 라우트를 만들었습니다. 컨트롤러는 클라이언트에서 POST 요청을 수신하고, 해당 POST 요청으로 받은 데이터를 기반으로 Stripe 결제 의도를 생성해야 하며, 결제 의도가 생성된 후에는 클라이언트에 필요한 결제 지시를 반환해야 합니다.
클라이언트 측에는 제출 버튼이 있는 작은 폼이 있습니다.
이 컨트롤러와 클라이언트 페이지(서버-클라이언트) 간의 통신을 설정할 수 없습니다. 두 개의 컨트롤러(Rails와 Ember)가 존재하는 것이 다소 혼란스럽습니다.
훌륭한 진행 상황입니다. Discourse 플러그인 개발에 처음 도전하는 분으로서, 이 프로젝트는 확실히 야심 찬 목표입니다. 그 장점은 이 작업을 성공적으로 마무리했을 때 느끼게 될 성취감과 유용성입니다. 반면, 한 번에 너무 많은 것을 시도하다 보니 플랫폼 개발을 계속하는 데 흥미를 잃을 위험도 있습니다. Ember/Rails 조합은 특히 초기 단계에서 다루기 부담스러운 부분이 많으니, 계속 진행하세요!
일단 참고할 팁 몇 가지:
- 작업을 작은 단위로 나누어 진행하세요.
- 포크를 GitHub에 푸시한 후, 여기에서 코드 섹션을 영구 링크(permalink)로 공유하면 커뮤니티가 여러분이 무엇을 하고 있는지 더 명확하게 이해하는 데 도움이 될 수 있습니다.
- 먼저 Rails 컨트롤러에서 클라이언트로 전달되는 다운스트림 데이터를 확인하세요. HTTP 주소 끝에
.json을 붙여 Rails 라우트를 호출하면 클라이언트로 전달되는 원시 데이터를 볼 수 있습니다. 이를 통해 GET 요청의 Rails 측 동작을 검증할 수 있습니다.
- Ember 컨트롤러를 “인터페이스 동작” 및 백엔드로 다시 전달해야 할 사항을 처리하는 모듈로 생각하세요. (라우트에서도 동작을 처리할 수 있지만, 여기서는 넘어가겠습니다! :D)
- Ember 라우터는 백엔드와 프론트엔드의 나머지 부분을 연결하며, 템플릿, 컴포넌트 및/또는 컨트롤러가 소비할 모델을 설정합니다.
- 기존 구현 사례를 활용하세요. GitHub의 공식 플러그인과 Pavilion 플러그인을 모두 살펴보고 유사한 동작이나 목적을 위해 어떻게 구현되어 있는지 확인해 보세요. 모두 오픈소스이므로, 이를 활용하고, 복사하고, 규약을 따르세요 (특히 Discourse 코어의 규약!).

감사합니다. 조언을 따르고 진행 상황을 알려드리겠습니다 
어제 한 작업들을 전부 삭제하고 처음부터 다시 시작했습니다. 지금까지 진행한 내용과 현재 겪고 있는 문제를 보여드리겠습니다. 당분간 /locales .yml 파일 편집은 신경 쓰지 않고 모든 텍스트를 하드코딩했으며, handlebar 대신 클래식 HTML을 사용하기로 결정했습니다(동작하는 것을 만든 후에 다시 돌아올 예정입니다).
- 은행 송금 옵션을 추가했습니다
../discourse-subscriptions/assets/javascripts/discourse/templates/subscribe/show.hbs
<hr>
<h3>Bank Transfer</h3>
<form action="/payment_intent" method="post">
<!-- some data-->
<input type="submit" value="Next" class="btn btn-primary ">
</form>
<hr>
- 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])
# create a test payment intent
bk_payment_intent = Stripe::PaymentIntent.create({
amount: 1099,
currency: 'eur'
})
render json: payment_intent
end
end
end
- 그 라우트
../discourse-subscriptions/config/routes.rb
resources :payment_intents, only: %i[create]
하지만 프로젝트를 실행하고 ember 인스펙터로 들어가면 라우트가 존재하지 않는다고 표시됩니다
그 다음 폼 제출을 처리하는 가장 좋은 방법은 무엇일까요? 새로운 ember 컨트롤러를 생성해야 하는지, subscribe-show.js 컨트롤러를 사용해야 하는지, 아니면 subscribe/show.hbs 내에 script 태그를 추가해야 하는지 궁금합니다.
이 화면에는 Ember 라우트와 Ember 컨트롤러가 필요합니다. 여기에는 보이지 않으니 “다른” 컨트롤러를 말씀하시는 건가요?
아래 자료를 꼭 확인해 보세요:
Ember.js Guides - Guides and Tutorials - Ember Guides (emberjs.com)
그리고 사용자 설정 화면의 코드도 살펴보세요. 기본적인 폼 세트입니다.