我正在尝试使用 Rails 3.2 将 ActiveMerchant 集成到我的网站中。目前,我有代码可以使用 ActiveMerchant“有效”函数对信用卡进行一般验证,如果卡无效,该函数会返回一些错误消息。如果有错误,那么我想将它们添加到错误中并重新渲染视图以显示带有错误的视图。下面是我的控制器中的代码。
首先我创建一张信用卡
def credit_card
first_name = User.find(user_id).first_name
last_name = User.find(user_id).last_name
@credit_card ||= ActiveMerchant::Billing::CreditCard.new(
:brand => card_type,
:number => card_number,
:verification_value => card_verification,
:month => card_expiration.month,
:year => card_expiration.year,
:first_name => first_name,
:last_name => last_name
)
end
接下来我验证卡并尝试将返回的错误添加到视图的基本错误中
# Active Merchant Credit Card validation
def validate_card
unless credit_card.valid?
credit_card.errors.full_messages.each do |message|
errors[:base] << message
end
end
end
最后我在创建时调用 valid_card
validate :validate_card, :on => :create
但是我收到以下错误
订单中的 NoMethodError#create
显示第 18 行引发的 app/views/orders/_form.html.erb:
nil 的未定义方法“map”:NilClass 提取的源(大约行
18):
15: 16: 17: <%= f.label :print_dimension %>
18: <%= f.collection_select :print_dimension_id, @print_dimensions, :id, :dimension %> 19: 20: 21: <%= f.label : Delivery_option_id %>
如果您有任何建议,请告诉我。谢谢