【问题标题】:Rails 3 if statement with jQuery?Rails 3 if语句与jQuery?
【发布时间】:2012-08-11 23:48:21
【问题描述】:

我有一个多步骤 Rails 3 表单,我使用此 railscast: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();
  };    
});

我想要做的是告诉我的 Rails 应用,如果向用户收取的金额为 0,则不需要 Stripe 支付字段来成功提交表单。因此,我需要在我的控制器中修改此语句反映这一点:

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

@total 是向用户收取的金额,“save_with_payment”代表 Stripe 费用。这样做的最佳方法是什么?我可以以某种方式在此语句中添加另一个“if”吗?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby-on-rails-3 stripe-payments


    【解决方案1】:

    编辑:对不起,我写错了。

    您需要在付款前检查总收费是否大于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 将总价格(整数或浮点数)转换为浮点值并与浮点数(0.0)进行比较,我们可以使结果非常清楚。

    【讨论】:

    • @user1429496 我打错字了。再次检查它是否正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多