Javascript 在我的Rails应用程序中为带条纹的卡充电时出现问题

Javascript 在我的Rails应用程序中为带条纹的卡充电时出现问题,javascript,ruby-on-rails,forms,stripe-payments,Javascript,Ruby On Rails,Forms,Stripe Payments,我正在构建一个Rails应用程序,它可以接受信用卡,我正在尝试使用Stripe来实现这一点。我在将数据从我的应用程序传递到条带以便充电时遇到一些问题。这就是我希望在这个话题上得到帮助的原因 首先,我有一个标准表单(带有值而不是占位符,用于快速提交以进行测试)。表格成功地将姓名和电子邮件输入数据库,客户的“计划”暂时在控制器中硬编码: <%= form_for @customer do |f| %> <div class="payment-errors">

我正在构建一个Rails应用程序,它可以接受信用卡,我正在尝试使用Stripe来实现这一点。我在将数据从我的应用程序传递到条带以便充电时遇到一些问题。这就是我希望在这个话题上得到帮助的原因

首先,我有一个标准表单(带有值而不是占位符,用于快速提交以进行测试)。表格成功地将姓名和电子邮件输入数据库,客户的“计划”暂时在控制器中硬编码:

    <%= form_for @customer do |f| %>
      <div class="payment-errors"></div>
      <div class="name field">
        <%= f.label :name %>
        <%= f.text_field :name, :value => "Your name" %>
      </div>
      <div class="email field">
        <%= f.label :email %>
        <%= f.text_field :email, :value => "yourname@example.com" %>
      </div>
      <div class="cc_number field">
        <%= label_tag 'cc_number' %>
        <%= text_field_tag 'cc_number', nil, :value => "4242424242424242" %>
      </div>
      <div class="ccv field">
        <%= label_tag 'ccv' %>
        <%= text_field_tag 'ccv', nil, :value => "123" %>
      </div>
      <div class="cc_expiration field">
        <%= label_tag 'cc_month', "Expiration date" %>
        <%= text_field_tag 'cc_month', nil, :value => "12" %>
        <%= text_field_tag 'cc_year', nil, :value => "2012" %>
      </div>
      <div class="actions">
        <%= f.submit "Continue", :class => 'btn' %>
      </div>
    <% end %>
表单$.append(“”)似乎有问题,因为我的Ruby应用程序在到达
客户[stripe\u token]
时会中断

Finally, in my `customers_controller`, I have:

  def create
    @customer = Customer.new(params[:customer])
    @customer.product = 

    if @customer.save
      save_order
      redirect_to @customer
    else
      render action: 'new'
    end

  def save_order
    Stripe.api_key = STRIPE['secret']
    charge = Stripe::Charge.create(
      :amount => 20,
      :currency => "usd",
      :card => @customer.stripe_token,
      :description => "Product 1"
    )
  end
每当我提交表单时,它每次都会在控制器中点击
else
子句,经过大量的调试、谷歌搜索、从中剥离并从头开始重建,我仍然感到困惑

任何帮助都将不胜感激

编辑:添加了
客户模型

  attr_accessible :name, :email, :stripe_token, :product

  email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :email, :presence => true,
                    :format => { :with => email_regex },
                    :length => { :minimum => 6, :maximum => 60 },
                    :uniqueness => { :case_sensitive => false }

  validates :name, :length => {:minimum => 2, :maximum => 80 }

了解客户模型有助于了解情况。如果@customer.save返回false,则表示验证器可能失败

此外,您的模型上是否有stripe_标记作为可访问属性?否则,您将无法像现在这样从表单中分配它。请注意,令牌应该而不是存储在数据库中,因为它只能使用一次

class Customer 
  attr_accessor :stripe_token # do you have this?
end 

还有一个注意事项:您可能需要存储条带ID字段,以便稍后检索客户付款并取消其帐户。

我确实有:Stripe\u令牌作为可访问属性。将客户模型添加到原始post nowattr_accessible表明它存储在数据库中,而实际上不应该存储在数据库中。attr_accessor将创建一个getter/setter,以便您可以临时将其存储在实例中,这是此处的预期行为。无论如何,您能否在保存失败后打印@customer.errors.full_messages.inspect的结果?
class Customer 
  attr_accessor :stripe_token # do you have this?
end