Rails соединяют массив внутри карты без экранирования - PullRequest
0 голосов
/ 31 мая 2018

У меня есть массив хэшей, который я отображаю в строку Пример:

array_of_hashes = [{
  :me => 'happy',
  :you => 'notsohappy',
  :email => [
    {"Contact"=>"", "isVerified"=>"1"},
    {"Contact"=>"me@example.com", "isVerified"=>"1"},
    {"Contact"=>"you@example.com", "isVerified"=>"1"}
  ] 
},{another instance here...}]

Теперь я хочу преобразовать это в новый массив, который даст мне:

["happy", "notsodhappy", "me@example.com", "you@example.com"]

Мне нужно сопоставить и отклонить пустые адреса электронной почты в массиве хэшей "email".

Пока я пытался:

array_of_hashes.map{|record| [
  record['me'],
  record['you'],
  record['email'].map { |email| email['Contact']}.reject { |c| c.empty? }.join('", "')
] }

Но это возвращает ["happy", "notsohappy", "me@example.com\", \"you@example.com"]

Кавычки - это экранирование, даже если я добавлю .html_safe после .join

Короче говоря, он настаивает на том, чтобы объединенный массив содержал одну строку.Мне нужно разбить его на отдельные строки ... столько, сколько в массиве.

Мне нужно избавиться от этих кавычек, потому что я пытаюсь экспортировать массив как CSV, и пока он не разбивает электронную почтуадреса для отдельных столбцов.

Предложения?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018
array_of_hashes.map do |h|
  [h[:me], h[:you]].push(
    h[:email].map {|e|e["Contact"]}.reject(&:empty?) 
  ).flatten
end

# => [["happy", "notsohappy", "me@example.com", "you@example.com"], ...]
0 голосов
/ 31 мая 2018
results = []
array_of_hashes.each do |hash|
  single_result = []
  single_result << hash[:me]
  single_result << hash[:you]
  hash[:email].each do |email|
   single_result << email["Contact"] if email["Contact"].present?
  end
  results << single_result
  return results
end

Это приведет к: -

2.3.1 :091 > results
 => [["happy", "notsohappy", "me@example.com", "you@example.com"], ["happy", "notsohappy", "me@example.com", "you@example.com"], ["happy", "notsohappy", "me@example.com", "you@example.com"]] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...