Rails3.2を使用してActiveMerchantを自分のWebサイトに統合しようとしています。現在、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
ただし、以下のエラーが発生します
Orders#createのNoMethodError
行#18が発生したapp / views /orders / _form.html.erbを表示しています:
nil:NilClassの未定義のメソッド `map'抽出されたソース(行の周り
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%>
何か提案があれば教えてください。ありがとうございました