Не создавайте груды не связанных между собой переменных. Всегда старайтесь думать о вашем Ruby-коде в терминах манипулирования структурами:
- @data = { a: ["a","b","c","d","d"], b: ["a","b","c","c","d"], c: ["a","b","c","d"] }
Затем определите метод, который принимает этот массив и возвращает вычеркнутые уникальные и недублированные данные:
def dedup_uniq(array)
{
uniq: array.uniq,
dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
}
end
Тогда обработать это легко, вы просто повторяете:
- @data = @data.map { |k, d| [ k, dedup_uniq(d) ] }.to_h
Тогда у вас есть структура, которую вы хотите:
- @data.each do |k, d|
%ul.list-inline
- d[:uniq].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- d[:dup].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}