Ruby on rails 如何删除“文件”中的重复元素;。每个人都做什么;?
而不是Ruby on rails 如何删除“文件”中的重复元素;。每个人都做什么;?,ruby-on-rails,ruby,Ruby On Rails,Ruby,而不是 Receipt | A1 | Receipt | B1 | Receipt | A2 | Receipt | B2 | Receipt | A1 | Receipt | B1 | 我被告知使用array=array.uniq,但我不确定如何在代码中实现它。使用uniq,例如: Receipt | A1 | Receipt | B1 | Receipt | A2 | Receipt | B2 | 或者,如果您从不需要其他@purchased项目,那么我会使用破坏性的“!
Receipt | A1 |
Receipt | B1 |
Receipt | A2 |
Receipt | B2 |
Receipt | A1 |
Receipt | B1 |
我被告知使用array=array.uniq,但我不确定如何在代码中实现它。使用
uniq
,例如:
Receipt | A1 |
Receipt | B1 |
Receipt | A2 |
Receipt | B2 |
或者,如果您从不需要其他@purchased项目,那么我会使用破坏性的“!”方法执行控制器uniq
,例如:
<% @purchased.uniq.each do |sale| %>
@purchased_uniq = @purchased.uniq
@purchased.uniq!
如果@purchased数组包含不同对象的对象(例如模型),但有些对象与同一产品关联,并且您希望基于该产品执行uniq
,则可以使用块,例如:
<% @purchased.uniq.each do |sale| %>
@purchased_uniq = @purchased.uniq
@purchased.uniq!
或按标题:
@purchased.uniq!{|obj| obj.product }
请注意,您需要小心使用此类代码,因为这类代码很容易导致bug,例如,如果用户为同一产品多次购买。我建议编写测试代码,专门涵盖拥有多个相同产品的用户。此外,您可能希望确保每个产品都有一个唯一的标题,例如通过使用数据库约束(或者Rails模型验证唯一性)。
@bulled.uniq.each do | sale |
应该做到这一点,如果数组包含真实的重复对象,则在迭代序列之前移动元素。存在重复条目的事实可能表明基础数据存在缺陷。@user2864740的想法是正确的。在控制器中执行此操作,而不是在视图中。您传递给视图的唯一数据应该是实际要显示的内容所需的数据。您的sale
项目看起来都是uniq,因为它具有guid
。如果您想多次列出产品名称,那么您需要考虑并解释在仅显示唯一名称时您希望链接到哪个销售。因此,如果您只想一次看到产品标题“A1”,您会将其与您的拾取路径链接到哪个guid
?