Я пытаюсь интегрировать ActiveMerchant в свой веб-сайт с помощью Rails 3.2. В настоящее время у меня есть код для общей проверки кредитной карты с использованием действительной функции 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 в заказах#создать
Показано app/views/orders/_form.html.erb, где строка № 18 поднята:
неопределенный метод `map' для nil: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 %›
Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения. Спасибо