2016-07-27 7 views
0

Also habe ich meine Rails App, die Abonnements für den Zugriff auf Inhalte verkauft. Ich füge vorübergehend ein verstecktes Feld in das Auscheckformular ein, um tax_percent an Stripe's API zu übergeben, aber es wird weiterhin im Stripe-Dashboard als null angezeigt. Die Steuer gilt nur für NJ und beträgt 7%, wenn der Käufer auch in NJ ist. Ich berechne die Umsatzsteuer über einen Javascript-Aufruf (Calculating Sales Tax for a US State in Javascript), der dann den Wert auf die Aktion zum Erstellen der Subskription # überträgt. Außer es funktioniert nicht.Stripe und tax_percent in meiner Rails App

Hier ist, was die Zeile wie in der Form aussieht:

<input type="hidden" id="tax_percent" name="tax_percent"> 
<%= f.hidden_field :plan_id %> 

Ja, ich brauche eine Ruby-Methode bauen diese auf der Serverseite zu berechnen, aber für jetzt, das ist in Ordnung.

Hier ist, was in den Protokollen auftaucht:

Processing by Koudoku::SubscriptionsController#create as HTML 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"TokenValueHere", "tax_percent"=>"7", "subscription"=>{"plan_id"=>"5", "credit_card_token"=>"OtherTokenValue", "last_four"=>"undefined", "card_type"=>"undefined"}, "owner_id"=>"72"} 

Sie sehen also, dass tax_percent außerhalb des Bezugsobjekts zu sein scheint, doch plan_id ist nicht, aber sie sind direkt nebeneinander in der Kasse Form .

Wie bekomme ich diese tax_percent, um die Stripe API richtig zu treffen?

Antwort

1

Warum ist Ihr f.hidden_field im Abonnement-Objekt, während Ihr Handbuch <input> nicht ist, fragen Sie? Das liegt daran, dass Ihre manuelle Eingabe nicht die Namenskonvention für Formularfelder verwendet, die automatisch angewendet wird.

Als docs for #hidden_field show, ihr verstecktes Feld plan_id hat tatsächlich ein name Attribut subscription[plan_id], nicht plan_id. Ein anderes verstecktes Feld muss die gleiche subscription[…] Konvention verwenden, damit der Wert automatisch in den Hash-Wert params["subscription"] eingegeben wird.

Sie können automatisch Ihr tax_percent verstecktes Feld zu dieser Namenskonvention einhalten, indem Sie den eigenständigen Form Helfer mit hidden_field:

<%= hidden_field :subscription, :tax_percent %> 
<%= f.hidden_field :plan_id %> 
+0

Kann ich meinen Javascript Rechner Ausgang verwenden, die document.getElementById ist (‚tax_percent‘). Wert = tax_percent; um diesen Steuerprozentwert in den Ruby hidden_field zu injizieren: <% = hidden_field: subscription,: tax_percent%> ?? – JohnOHFS

+0

Ich erhalte einen Fehler, wenn ich diese Änderung mache: undefinierte Methode 'tax_percent 'für Subscription – JohnOHFS

+0

@JohnOHFS Ah, ich habe nicht bemerkt, dass der Standardwert für dieses versteckte Feld' @ subscription.tax_percent' wäre. Wenn Sie keine 'tax_percent'-Methode für Ihr' Subscription'-Modell definieren möchten, können Sie dem Feld einen anderen Wert wie '0.07' geben, indem Sie' <% = hidden_field: subscription,: tax_percent, value: '0.07 eingeben '%> '. –