0

<% @sp_references.each 做 |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%>


这个在 tax_ref.reference 中获取不同元素的“uniq”选项不起作用。它显示“未定义的方法‘uniq’用于#

4

3 回答 3

0
<%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 %>

这个对我有用。

于 2010-12-01T08:13:27.297 回答
0

在我看来,这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 %>
于 2010-11-29T15:40:20.597 回答
0

uniq 是任何可枚举对象(数组)上的方法。所以不能在tax_ref的引用对象上调用它。

相反,您需要在 sp_ref.all_references 上调用它,例如sp_ref.all_references.uniq.each

这个SO Question有一些关于在只有一个属性重复(不是唯一的)时过滤掉重复对象的建议。

于 2010-11-29T15:41:16.750 回答