2013-05-01 3 views
0

내 응용 프로그램의 경우 사용자가 있습니다. 균형 결제를 활용하여 사용자가 나중에 사용할 수 있도록 신용 카드 정보를 저장할 수있게하려고합니다. 나는 가이드로 아래 두 개의 링크를 따라 현재 다음과 같은 오류가 있습니다 : 균형 잡힌 지불 - 라우팅 오류

Routing Error 
No route matches [POST] "/store_credit_card" 

내가 GISTRails form submit handler not being executed이 따랐다.

  • balanced_controller.rb은 -
  • _credit_card_form.html.haml를 생성 - 생성 app>view>balanced
  • credit_card_submission.js 아래에 넣어 - 생성과의 자리 표시 자 텍스트를 대체 내 사용자 모델
  • app>assets>javascript
  • 추가 필드 :balanced_account_uri string 아래에 넣어. 균형 시장을위한 js 파일 url
  • balanced_controlle의 메소드에 대해 routes.rb를 업데이트했습니다. r.rb

누군가가 왜 작동하지 않는지 알고 있습니까?

routes.rb

resources :users do 
    resources :balanced do 
     member do 
     post :store_credit_card, :create_balanced_account 
     end 
    end 
end 

보기/사용자/edit.html.erb

<div class = "container"> 

<script type="text/javascript" src="https://js.balancedpayments.com/v1/balanced.js"></script> 

<script type="text/javascript"> 
    balanced.init('YOUR MARKETPLACE URI HERE'); 
</script> 

<%= render 'balanced/credit_card_form' %> 

</div> 

보기/균형/_credit_card_form.html.haml

= form_tag "/store_credit_card", :method => :post, :id => "credit-card-form", :class => "form-horizontal" do 
    .control-group 
    = label_tag "cc-number", "Card Number", :class => "control-label" 
    .controls 
     = text_field_tag "cc-number", nil, :placeholder => "Enter Credit Card Number", :class => "cc-number", :autocomplete => "off" 
    .control-group 
    = label_tag "cc-em", "Expiration", :class => "control-label" 
    .controls 
     = text_field_tag "cc-em", nil, :placeholder => "Expiration Month", :class => "cc-em", :autocomplete => "off" 
     = text_field_tag "cc-em", nil, :placeholder => "Expiration Year", :class => "cc-ey", :autocomplete => "off" 
    .control-group 
    = label_tag "cc-csc", "Security Code", :class => "control-label" 
    .controls 
     = text_field_tag "cc-csc", nil, :placeholder => "Security Code", :class => "cc-csc", :autocomplete => "off" 
    .control-group 
    .controls 
     = submit_tag "Submit", :class => "btn btn-primary btn-large" 

자산/자바 스크립트/

var marketplaceUri = 'YOUR MARKETPLACE URI HERE'; 
var requestBinUrl = '/store_credit_card' 


var debug = function(tag, content) { 
    $('<' + tag + '>' + content + '</' + tag + '>').appendTo('#result'); 
}; 

try { 
balanced.init(marketplaceUri); 
} catch (e) { 
debug('code', 'balanced.init error!'); 
} 

function balancedCallback(response) { 
var tag = (response.status < 300) ? 'pre' : 'code'; 
debug(tag, JSON.stringify(response)); 
switch(response.status) { 
    case 201: 
     console.log(response.data); 
     var $form = $("#credit-card-form"); 
     var card_token_uri = response.data['uri']; 
     $('<input>').attr({ 
      type: 'hidden', 
      value: card_token_uri, 
      name: 'balancedCreditCardURI' 
     }).appendTo($form); 
     $form.attr({action: requestBinUrl}); 
     $form.get(0).submit(); 
     break; 
    case 400: 
     console.log(response.error); 
     break; 
    case 404: 
     console.log(response.error); 
     break; 
} 
} 

var tokenizeCreditCard = function(e) { 
e.preventDefault(); 

var $form = $('#credit-card-form'); 
var creditCardData = { 
    card_number: $form.find('.cc-number').val(), 
    expiration_month: $form.find('.cc-em').val(), 
    expiration_year: $form.find('.cc-ey').val(), 
    security_code: $form.find('.cc-csc').val() 
}; 

balanced.card.create(creditCardData, balancedCallback); 
}; 

$(function(){ 
$('#credit-card-form').submit(tokenizeCreditCard); 
}); 

balanced_controller.rb

class BalancedController < ApplicationController 
    def create_balanced_account 
    current_user.balanced_account_uri = Balanced::Marketplace.my_marketplace.create_account(:email => current_user.email, :type => 'person').uri 
    current_user.save 
    # add a redirect to the desired path 
    redirect_to root_url 
    end 

    def store_credit_card 
    balanced_account = Balanced::Account.find(current_user.balanced_account_uri) 
    balanced_account.add_card(params[:balancedCreditCardURI]) 
    # add a redirect to the desired path 
    redirect_to root_url 
    end 

    def store_bank_account 
    balanced_account = Balanced::Account.find(current_user.balanced_account_uri) 
    balanced_account.add_card(params[:balancedBankAccountURI]) 
    # add a redirect to the desired path 
    redirect_to root_url 
    end 

    def process_payment 
    balanced_account = Balanced::Account.find(current_user.balanced_account_uri) 
    account.debit(
     :amount => 1000, # or params[:amount] 
     :description => "Balanced Payments transaction", 
     :appears_on_statement_as => "Balanced Payments") 
    # add a redirect to the desired path 
    redirect_to root_url 
    end 
end 
+0

저는 루비가 아니지만 라우팅 엔진에 경로를 등록 했습니까? – griegs

답변

0

당신의 경로에 따라 게시물 경로가 그래서 당신은 "users/:user_id/balanced/:balanced_id/store_credit_card"

같은 "/store_credit_card"하지만 뭔가를하지 않을 것 credit_card_submissions.js 일치하도록 form_tag "/store_credit_card"을 변경해야합니다.

rake routes을 실행하여 현재 정의 된 경로를 확인하십시오.

또한, 당신이 form_tag에 문자열이 아닌 당신의 경로에 의해 생성 된 URL 도우미를 사용할 수 있습니다

form_tag users_balanced_store_credit_card_path(@user, @balanced) 

위의 잘못 될 수있다, rake routes는 당신에게 정확한 경로 및 도우미 이름을 말할 것이다.

관련 문제