Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何删除“文件”中的重复元素;。每个人都做什么;?_Ruby On Rails_Ruby - Fatal编程技术网

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