0

このrailscastを使用して設定したマルチステップRails3フォームがあります:http: //railscasts.com/episodes/217-multistep-forms、そして別のrailscastを使用してアプリのStripe支払いを実装しました:http:// railscasts.com/episodes/288-billing-with-stripe

私のアプリでは、ユーザーに請求される金額が0の場合、支払いフォームはjQueryを介して非表示になります。

$(document).ready(function() {
  var xyz = $("span#total").text();

  if (xyz == 0){
    $("div#stripefields").hide();
  };    
});

私ができるようにしたいのは、ユーザーに請求される金額が0の場合、フォームを正常に送信するためにStripe支払いフィールドは必要ないことをRailsアプリに伝えることです。したがって、コントローラーでこのステートメントを変更して、それを反映する必要があります。 :

elsif @video.last_step?
   @video.save if @video.all_valid? && @video.save_with_payment(@total) 

@totalはユーザーに請求される金額であり、「save_with_payment」はStripeの請求を表します。これを行うための最良の方法は何でしょうか?どういうわけか、このステートメントに別の「if」を追加できますか?

4

1 に答える 1

4

編集:申し訳ありませんが、少しタイプミスをしました。

支払う前に、請求された合計が0より大きいかどうかを確認するか、合計が0の場合はビデオを保存できるようにする必要があります。

@video.save if @video.all_valid? && ((@total > 0 && @video.save_with_payment(@total)) || @total == 0)

また、jQueryコードでは、整数を文字列と比較しています。あなたがしたいかもしれません:

$(document).ready(function() {
  var xyz = parseFloat($("span#total").text());

  if (xyz === 0.0){
    $("div#stripefields").hide();
  }
});

潜在的な不整合を回避するためだけに。と比較すると==、型を強制しようとしますが、そのために奇妙な結果が得られる可能性があります。したがって、parseFloatを使用して合計価格(整数またはfloat)をfloat値に変換し、float(0.0)と比較することで、結果が非​​常に明確になります。

于 2012-08-15T16:49:30.877 に答える