I can't generate a single vcard file with multiple contacts using vpim

Hi,

I want to generate a single .vcf file with several contacts, but I can’t
because vpim generates it like a unique contact .vcf with other users
data.

This is my code for generate a single contact vcard and works fine:

def get_card

contact = User.find(params[:id])
card = Vpim::Vcard::Maker.make2 do |maker|

  maker.add_name do |name|
    name.given = contact.user_info.name
  end

  maker.add_addr do |addr|
    addr.location = 'home'
    addr.street = contact.user_info.address_street
    addr.locality = contact.user_info.address_city
    addr.region = contact.user_info.address_state
    addr.postalcode = contact.user_info.address_postalcode
  end

  if !contact.user_info.telephone.empty?
    maker.add_tel(contact.user_info.telephone) do |tel|
      tel.location = 'home'
      tel.preferred = true
    end
  end

  if !contact.user_info.fax.empty?
    maker.add_tel(contact.user_info.fax) do |tel|
      tel.location = 'home'
      tel.capability = 'fax'
    end
  end

  maker.add_email(contact.email) do |e|
    e.location = 'home'
  end
end

send_data card.to_s, :filename => contact.user_info.name + ".vcf"

end

And this is my method for a single vcard file with multiple contacts:

def get_list_cards
ids = params[:ids]
contact_list = []
card = Vpim::Vcard::Maker.make2 do |maker|
ids.each do |id|
contact_list.push(User.find(id))
end
contact_list.each do |contact|
#I need to introduce BEGIN:VCARD tag to separate contacts
maker.add_name do |name|
name.given = contact.user_info.name
end

    maker.add_addr do |addr|
      addr.location = 'home'
      addr.street = contact.user_info.address_street
      addr.locality = contact.user_info.address_city
      addr.region = contact.user_info.address_state
      addr.postalcode = contact.user_info.address_postalcode
    end

    if !contact.user_info.telephone.empty?
      maker.add_tel(contact.user_info.telephone) do |tel|
        tel.location = 'home'
        tel.preferred = true
      end
    end

    if !contact.user_info.fax.empty?
      maker.add_tel(contact.user_info.fax) do |tel|
        tel.location = 'home'
        tel.capability = 'fax'
      end
    end

    maker.add_email(contact.email) do |e|
      e.location = 'home'
    end
  end
  #I need to introduce END:VCARD tag to separate contacts
end
send_data card.to_s, :filename => params[:name]+".vcf"

end

It works but not well, it generates .vcf file but with a single N:; tag.
I need to add as N:; tags as user names and i need to split each contact
with BEGIN:VCARD and END:VCARD. I don’t know how to do it.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs