<% @purchased.each do |sale| %>
Receipt | <%= link_to sale.product.title, pickup_path(sale.guid) %>
<% end %>
结果是
Receipt | A1 |
Receipt | B1 |
Receipt | A2 |
Receipt | B2 |
Receipt | A1 |
Receipt | B1 |
而不是
Receipt | A1 |
Receipt | B1 |
Receipt | A2 |
Receipt | B2 |
我被告知使用array = array.uniq,但我不确定如何在代码中实现它。
答案 0 :(得分:1)
使用uniq
,例如:
<% @purchased.uniq.each do |sale| %>
如果是我的代码库,我宁愿在控制器中执行uniq
,例如:
@purchased_uniq = @purchased.uniq
或者,如果您从未需要其他@purchased项目,那么我将使用破坏性的“!”来执行控制器uniq
。方法,例如:
@purchased.uniq!
如果您的@purchased数组包含不同对象的对象(例如模型),但某些对象与同一产品关联,并且您希望根据产品执行uniq
,则可以使用块,例如:
@purchased.uniq!{|obj| obj.product }
或按标题:
@purchased.uniq!{|obj| obj.product.title }
请注意,您要小心使用这种代码,因为这种代码很容易导致错误,例如,如果用户对同一产品进行多次购买。我建议编写专门涵盖具有多个相同产品的用户的测试代码。此外,您可能希望确保每个产品都具有唯一标题,例如使用数据库约束(以及可选的Rails模型验证唯一性)。