Uncaught TypeError: Cannot read property 'submit' null für Streifen-Zahlung

Ich bin die Integration von stripe Zahlungen in meine app. Ich wechselte aus dem Streifen Standard "Bezahlen mit Karte" - Taste für eine ich angepasst. Nachdem Sie dies getan haben, wird der test-Modus erfolgreich erscheint und ich kann geben Sie die test-Anmeldeinformationen. Allerdings, wenn ich den test Einreichen-Zahlung, und es genehmigt wird, bleibt er einfach auf dem gleichen pin Seite eher als auf die Kosten-Seite, die ich für ihn erstellt.

Hinweis: die app würde den übergang nur feinen Streifen-Zahlung an den Gebühren erstellen.html-Code.erb Seite, bis ich ersetzt die Standard-stripe Schaltfläche Zahlung mit meine neue benutzerdefinierte Schaltfläche.

Auch, suchen Entwickler-tools, die ich tun, beachten Sie, dass es liest, wenn ich behaupte test Zahlung:

Uncaught TypeError: Cannot read property 'submit' of null 

Ich denke, das bezieht sich auf meinen code unten, wo ich behaupte, dass die chargeForm.

Jemand dieses Problem, auftreten, bevor oder wissen kann ich dieses Problem beheben? Vielen Dank!

app/views/pins/_details.html-Code.erb

        <%= form_tag charges_path, id: 'chargesForm' do %>
          <script src="https://checkout.stripe.com/checkout.js"></script>
          <%= hidden_field_tag 'stripeToken' %>
          <%= hidden_field_tag 'stripeEmail' %>  
          <button id="btn-buy" type="button" class="btn btn-success btn-lg btn-block"><span class="glyphicon glyphicon-heart"></span>   I want this!</button>

          <script>
          var handler = StripeCheckout.configure({
            key: '<%= Rails.configuration.stripe[:publishable_key] %>',
            token: function(token, arg) {
              document.getElementById("stripeToken").value = token.id;
              document.getElementById("stripeEmail").value = token.email;
              document.getElementById("chargeForm").submit();
            }
          });
           document.getElementById('btn-buy').addEventListener('click', function(e) {
            handler.open({
              name: 'OMG! <%= @pin.manufacturer %>',
              description: '<%= @pin.description %>',
              amount: 1000
          });
          e.preventDefault();
         })
        </script>
      <% end %>

app/controllers/charges_controller.rb

class ChargesController < ApplicationController

def create
  # Amount in cents
  @amount = 500

  customer = Stripe::Customer.create(
    :email => params[:stripeEmail],
    :card  => params[:stripeToken]
  )

  charge = Stripe::Charge.create(
    :customer    => customer.id,
    :amount      => @amount,
    :description => 'Rails Stripe customer',
    :currency    => 'usd'
  )

    rescue Stripe::CardError => e
      flash[:error] = e.message
      redirect_to charges_path
   end

end

app/views/Gebühren/erstellen.html-Code.erb

You bought some Awesome stuff!

app/config/routes.rb

Rails.application.routes.draw do
  resources :pins
  resources :charges

  devise_for :users
  root "pins#index"
  get "about" => "pages#about" #creates about_path
  get "contact" => "pages#contact" #creates contact_path
  get "auction" => "pages#auction" #creates auction_path
  get "terms" => "pages#terms" #creates terms_path
  post 'send_mail', to: 'contact#send_mail'
  get 'contact', to: 'contact#show'

 scope 'pins', controller: :pins do
    scope '/:id' do
     post 'bid', to: :bid
    end
 end

  scope 'admin', controller: :admin do
    scope 'pins' do
      get '/:pin_id', to: :pin
    end
  end
end

InformationsquelleAutor Codestudio - Cyrus Khajvandi | 2016-06-02

Schreibe einen Kommentar