也许这个问题可能已经有了答案,但我不确定要搜索什么。
我有一个包含服装品牌 A 到 Z 列表的页面,其中有一个 each block 来遍历所有这些品牌。我想按字母拆分这个列表,并在顶部有一个 A 到 Z 行的链接,每个字母在页面上跳转到列表中的字母。但是,为了做到这一点,我只能考虑为每个字母制作一个循环,其中 <A NAME="A">
等等,以及每个实例变量。
我的问题是,如何避免在我的 Controller 中有 26 个不同的实例变量?
@Abrands = Product.where('brand LIKE ?', "A%")
@Bbrands = Product.where('brand LIKE ?', "B%")
@Cbrands = Product.where('brand LIKE ?', "C%")
etc.
这显然不是很 DRY,有没有更好的方法可以做到这一点?我仍然在寻找我的脚,任何帮助将不胜感激!
最佳答案
这样的事情对你有用吗?
@products = Product.all.group_by{|product| product.brand.slice(0,1)}
这是一个很好的单行代码,只会发出 1 个查询。它将产生类似于其他用户建议的散列。
关于ruby-on-rails - 类似查找查询的 DRY 实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388738/