如何在rails模型中访问CoffeeScript中创建的变量?

时间:2015-02-13 18:32:02

标签: javascript ruby ruby-on-rails-4 coffeescript stripe-payments

我正在使用条带在rails 4应用程序上创建客户帐户。

基本上,我知道我的coffeescript代码捕获cc信息(下面)与Stripe成功通信,因为正在为卡创建令牌(我可以在创建后将其打印到屏幕上)。

同样,我的模型中有一个方法可以在Stripe中创建客户对象。它连接并以条带形式显示,当我尝试对信用卡信息进行硬编码(即通过具有预设参数的块)时,卡信息以条带形式显示。

但是,我无法弄清楚如何将卡片令牌从我的coffeescript代码传递给我的模型(或控制器,或者我真正可以实际使用它的任何地方)。如果有人可以帮助我,或者指出一些关于它的文档那就太棒了!

这是我的coffeescript代码,其中令牌保存为“#subscription_stripe_card_token”:

  handleStripeResponse: (status, response) ->
if status == 200
  $('#subscription_stripe_card_token').val(response.id)
  $('#stripe_error').text(response.id)
  $('#new_subscription')[0].submit()
else
  $('#stripe_error').text(response.error.message)
  $('input[type=submit]').attr('disabled', false)

这是我的模型,我正在尝试(不成功)访问它(在save_with_payment方法中,调用Stripe :: Customer.create,我正在尝试传递卡信息):

    class Subscription
  include Mongoid::Document
  belongs_to :user
  field :plan, type: String
  field :stripe_customer_token, type: String

  attr_accessor :stripe_card_token

  def save_with_payment(plan, email, name)
    if valid?
        customer = Stripe::Customer.create(description: name, email: email, plan: plan, card: stripe_card_token)
        write_attribute(:stripe_customer_token, customer.id)
        save!
    end
    rescue Stripe::InvalidRequestError => e
    logger.error "Stripe error while creating customer: #{e.message}"
    errors.add :base, "There was a problem with your credit card."
    false
  end

同样,其他一切都有效。目前我假设它传递了一个“零”值,我无法弄清楚如何访问它。

1 个答案:

答案 0 :(得分:0)

你做不到。 CoffeeScript(编译为JavaScript)在用户的浏览器中运行。 Rails在您的服务器上运行。他们无法访问彼此的状态。

它们之间可以进行的唯一通信形式是客户端发起的HTTP请求。

您需要通过AJAX将条带令牌发送到服务器。