Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 成功充电后,RoR无法检索条带charge.id_Ruby On Rails_Ruby_Stripe Payments - Fatal编程技术网

Ruby on rails 成功充电后,RoR无法检索条带charge.id

Ruby on rails 成功充电后,RoR无法检索条带charge.id,ruby-on-rails,ruby,stripe-payments,Ruby On Rails,Ruby,Stripe Payments,我成功地用条纹宝石和(大部分)样板条纹代码(如下)向一张卡收费。成功充电后,我尝试检索充电ID,以便将其插入表单并保存以备以后使用,但遇到错误: ActionView::Template::Error (undefined method `id' for #<Charge:0x000001065ab458>): ActionView::Template::Error(未定义#的方法'id'): 这似乎很奇怪。在检查从我的控制器(表面上是条带宝石)返回的费用对象时,似乎没有“id”

我成功地用条纹宝石和(大部分)样板条纹代码(如下)向一张卡收费。成功充电后,我尝试检索充电ID,以便将其插入表单并保存以备以后使用,但遇到错误:

ActionView::Template::Error (undefined method `id' for #<Charge:0x000001065ab458>):
ActionView::Template::Error(未定义#的方法'id'):
这似乎很奇怪。在检查从我的控制器(表面上是条带宝石)返回的费用对象时,似乎没有“id”,只有令牌、金额和空错误数组

有什么想法吗

控制器代码

class ChargesController < ApplicationController

  respond_to :js

  def create
    @charge = Charge.create(charge_params)
    respond_with(@charge)
  end

  private

  def charge_params
    params.require(:charge).permit(:stripeToken, :id)
  end
end
class ChargesController
===============================

模型代码

require 'active_model'

class Charge
  include ActiveModel::Model
  include CurrentCart

  class << self
    def create(params)
      new(params).tap(&:save)
    end
  end

  attr_reader :amount, :token, :id, :line_items_list

  def initialize(params)
    @amount = params[:amount].to_i
    @token = params[:stripeToken]
    Stripe.api_key = "sk_test_srlCaebNKtVDT7OPZIIb5jxV"

  end

  def save
    begin
      stripe_charge = Stripe::Charge.create(
        :amount => amount,
        :currency => "usd",
        :card => token,
        :description => 'Ties for all!'
      )

    rescue Stripe::CardError => e
      errors.add(:base, e.message)
    rescue => e
      errors.add(:base, "An error occurred with the payment processing: #{e.inspect}")
    end

    errors.empty?
  end
需要“活动的\u模型”
班费
包括ActiveModel::Model
包括当前购物车
班级人数,
:货币=>“美元”,
:card=>token,
:description=>“所有人的领带!”
)
救援条带::CardError=>e
错误。添加(:base,e.message)
救援=>e
添加(:base,“支付处理发生错误:#{e.inspect}”)
结束
是空的吗?
结束

==========

您的收费服务对象未返回条带收费对象

def id 
  @stripe_charge.id
end
实际上,创建条带费用的方法只返回布尔值
errors.empty?

您正在检查的charge对象只是您自己charge类的一个实例

另一种方法是在实例变量中保存条带费用

@stripe_charge = Stripe::Charge.create(
然后编写一个访问器,从您自己的Charge对象中检索它

def id 
  @stripe_charge.id
end

就像一个完美的,完美的魅力。简单干净。谢谢你的帮助。但愿我有足够的影响力去投票!你是自由职业者吗?我?我是一个自由职业者承包商。。。作为一名开发人员,同时也是RoR培训师。