gpt4 book ai didi

ruby-on-rails - activemerchant 未定义方法 'month'

转载 作者:数据小太阳 更新时间:2023-10-29 07:39:47 27 4
gpt4 key购买 nike

我正在构建一个应用程序来处理不同服务的不同类型的交易,例如订阅、礼品订阅和购买。

我对礼品交易和 activemerchant 有疑问。我将简要概述其工作原理。

用户创建礼物订阅并为其填写数据,它存储在数据库中,然后在自定义“show_view”中显示给用户以供查看,然后用户继续在单独的表单,当他提交数据时,会调用 Controller 中的一个方法来处理事务,这就是我遇到问题的地方。

这是 gift_subscription.rb 模型

    def gift_purchase
response = GATEWAY.purchase(price, credit_card, gift_purchase_options)
GiftTransaction.create!(:action => "gift_purchase", :amount => price, :response => response)
response.success?
end
private
def gift_purchase_options
{
:ip => ip_address,
:billing_address => {
:name => name + last_name,
:address1 => address1,
:city => city,
:state => state,
:country => "Mexico",
:zip => zip
}
}
end

def validate_card
unless credit_card.valid?
credit_card.errors.full_messages.each do |message|
errors[:base] << message
end
end
end

def credit_card
@credit_card = ActiveMerchant::Billing::CreditCard.new(
:brand => card_type,
:number => card_number,
:verification_value => card_verification,
:month => card_expires_on.month,
:year => card_expires_on.year,
:first_name => name,
:last_name => last_name
)

这是 gift_subscription_controller.rb

def review
@gift_subscription = GiftSubscription.find(params[:id])
end

def edit_review
@gift_subscription = GiftSubscription.find(params[:id])
end

def update_review
@gift_subscription = GiftSubscription.find(params[:id])

respond_to do |format|
if @gift_subscription.update_attributes(params[:gift_subscription])
format.html { redirect_to "gift_subscriptions/review/#{@gift_subscription.id}", :notice => 'Gift subscription was successfully updated.' }
format.json { head :no_content }
else
format.html { render :action => "edit_review" }
format.json { render :json => @gift_subscription.errors, :status => :unprocessable_entity }
end
end
end

def do_gift_transaction
@gift_subscription = GiftSubscription.find(params[:id])
if @gift_subscription.gift_purchase
redirect_to '/thank_you'
else
redirect_to "/gift_subscriptions/#{@gift_subscription.id}/failed_transaction"
end
end

def failed_transaction
@gift_subscription = GiftSubscription.find(params[:id])
@gift_transactions = @gift_subscription.gift_transactions
end

def transaction_details
@gift_subscription = GiftSubscription.find(params[:id])
end

为了让事情更清楚一点,从 Controller 创建方法,它将用户重定向到审查操作,如果他们想要更改某些内容,那里有一个 edit_review,然后他们转到 transaction_details,在那里他们输入信用卡信息,最后是方法调用 do_gift_transaction 以实际进行交易。

我得到的错误如下

NoMethodError in GiftSubscriptionsController#do_gift_transaction

undefined method `month' for nil:NilClass
Rails.root: /home/peanut/RubymineProjects/GiftBox

Application Trace | Framework Trace | Full Trace
app/models/gift_subscription.rb:44:in `credit_card'
app/models/gift_subscription.rb:12:in `gift_purchase'
app/controllers/gift_subscriptions_controller.rb:113:in `do_gift_transaction'

我一直在四处寻找,但我似乎无法找到它不识别月份的原因...对于其他订阅,我有基本相同的模型(有一些差异),但它工作得很好。在这里的任何帮助将不胜感激。

GiftSubscription 模型属性

attr_accessible :response, :name, :last_name, :address1, :address2,:city,
:state, :zip, :card_type, :ip_address, :price,
:duration, :created_at, :card_expires_on, :card_number,
:card_verification, :message

has_one :gift_transactions, :class_name => "GiftTransaction"
attr_accessor :card_number, :card_verification
validate :validate_card, :on => :transaction_details

最佳答案

所以经过几个小时的敲打我的脑袋,事实证明这很简单......在输入信用卡数据的 View 中,应该保存到数据库的字段没有保存,因为我只有一个用于继续的 link_to 按钮,因此当 credit_card 方法被调用时,它是空的。

感谢 lander16 指出这一点。

关于ruby-on-rails - activemerchant 未定义方法 'month',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12964939/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com