<%@ sp_references.each do | sp_ref | %GT;
<%sp_ref.all_references.each_with_index do | tax_ref,i | %GT;
<%if(tax_ref.reference.uniq)&& (tax_ref.reference!〜/ emend $ / i)%>
<%= tax_ref.reference%>
<%端%GT;
<%端%GT;
<%端%GT;
这个'uniq'选项在tax_ref.reference中获取不同的元素是行不通的。它为#显示“未定义的方法`uniq'
答案 0 :(得分: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 %>
答案 1 :(得分:0)
uniq是任何可枚举对象(数组)的方法。所以你不能在tax_ref的参考对象上调用它。
相反,您需要在sp_ref.all_references上调用它,例如sp_ref.all_references.uniq.each
当只复制一个属性(非唯一)时,此SO Question有一些关于过滤掉重复对象的建议。
答案 2 :(得分: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 %>
它对我有用。