найти дубликаты в каждом массиве рельсов - PullRequest
0 голосов
/ 29 ноября 2010

<% @ sp_references.each do | sp_ref |%>
<% sp_ref.all_references.each_with_index do | tax_ref, i |%> <% if (tax_ref.reference.uniq) && (tax_ref.reference! ~ / emend $ / i)%> <% = tax_ref.reference%> <% end%> <% end%> <% end%>


Эта опция 'uniq' для получения отдельных элементов в tax_ref.reference не работает.Показывает "неопределенный метод" uniq "для #

Ответы [ 3 ]

0 голосов
/ 29 ноября 2010

uniq - это метод для любого перечисляемого объекта (массива). Поэтому вы не можете вызвать его для ссылочного объекта tax_ref.

Вместо этого вы захотите вызвать его по sp_ref.all_references, например sp_ref.all_references.uniq.each

Этот SO Вопрос содержит некоторые рекомендации по фильтрации дублированных объектов, когда дублируется только атрибут (не уникальный).

0 голосов
/ 01 декабря 2010
<%arr = Array.new %> <% @sp_references.each do |sp_ref| %> <% sp_ref.all_references.each_with_index do |tax_ref, i| %>  <%if (tax_ref.reference !~ /emend$/i) %>  <% arr.push("#{tax_ref.reference}") %> <%end%>  <%end%>  <%end%> <%= arr.uniq %>

У меня работает.

0 голосов
/ 29 ноября 2010

Мне кажется, что tax_ref.reference не является массивом. uniq должен вызываться для массивов. Попробуйте вместо этого:

<% sp_ref.all_references.keys.uniq.each do |tax_ref| %>
    <%if (tax_ref.reference !~ /emend$/sp_ref.all_references[tax_ref]) %>
        <%= tax_ref.reference %>
    <%end%>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...