Hvis du gerne vil eksportere vCards i din Ruby on Rails-applikation, så er du sikkert stødt på vPim. Dokumentation fortæller at man kan gøre følgende for at inkludere et billede i et vCard:
maker.add_photo do |photo|
photo.image = File.open(sti_til_billede).read
photo.type = 'jpeg'
end
Problemet er bare at det ikke virker i Mac OS X’ Adressebog, på en Nokia-telefon mv. Billedet, der inkluderes, bliver ikke vist.
Løsningen er at du selv foretager en mindre ændring af den streng, som dit card-objekt bliver til, når det serialiseres vha. encode-funktionen. 1) Du inkluderer billeddata vha. PHOTO;BASE64:[...] og 2) sørger for at base64-dataene bliver indlejret korrekt i vCard-filen.
Hvis vi antager at du gerne vil inkludere et billede, DIT_BILLEDE.jpg, der ligger i din /public-mappe i din rails-applikation, kan du bruge følgende stump kode:
mit_vcard = card.encode.sub("END:VCARD", "PHOTO;BASE64:" + "\n " + [File.open(Rails.public_path + 'DIT_BILLEDE.jpg').read].pack('m').to_s.gsub(/[ \n]/, '').scan(/.{1,76}/).join("\n ") + "\nEND:VCARD")
Anvender du ovenstående stykke kode, erstattes bundlinjen, END:VCARD, med et PHOTO-afsnit, der indeholder dine billeddata, som er formateret og opstillet korrekt i base64-format (og selvfølgelig END:VCARD til sidst).
Vil du derefter sende dit vCard til brugerens browser, så skriver du følgende:
send_data(mit_vcard, :type => 'text/x-vcard;', :filename => 'mit_vcard.vcf', :disposition => 'attachment')
Et voila, så virker vCard-eksportering med billeder, som fx ser sådan her ud i Adressebog i Mac OS X:

En kontaktperson i Adressebog i Mac OS X, som er importeret via et vCard fra Meeho!™. Bemærk brugen af kontaktperson-ikonet, som anvendes i Meeho!™.