我正在Rails中执行航班预订应用程序,并已成功列出航班作为数组的日期。如何删除阵列中的重复项Ruby
但是,我有重复的问题。我用了一个select_tag(:日期,options_for_select(@dates),它的工作原理,但我已经得到了所有这些重复的日期
继承人的代码@dates
@dates=Flight.all.map do |a|
dates=[]
unless dates.any? && dates.last[0]==a.flight_date_formatted
dates<<[a.flight_date_formatted, a.id]
end
end
这将返回。 [“22/5/2016”,1]类型的数组阵列我不能使用unique
因为第二个元素,其中id
总是不同的。访问数组的最后一个/第一个元素并获取[0]元素,这将是“22/5/2016”,如果它等于当前日期,则跳过此迭代。不幸的是,没有按照我的预期工作。
有7个航班,只有3个不同的日期,所以它不难捕捉至少一个不同的日期。
如何筛选重复记录?
谢谢,非常优雅回答这个问题应该从
map
块返回正确的值。我最终在控制器上使用了一个辅助方法。如果我理解正确,你的方法是获得具有独特日期的航班,然后在其上运行我的日期代码。 –@nathaks我更新了我的答案,包括从数据库中检索已经排序和唯一的记录。这实际上比在记忆中这样做更好。关于你的评论问题,这些可以一起使用。它们也可以独立使用。这取决于你如何在你的应用程序中使用它。数据库解决方案应该一次筛选和筛选。我更新了描述,使其更清晰一些。 –