每个联系人都有一个名字和姓氏。在我的联系人索引中,我按 ASC 顺序显示了一个按姓氏命名的 default_scoped 列表。这工作正常,但我希望让它变得更好。
我想在索引中创建一个有组织的列表,按联系人姓氏的第一个字母对联系人进行分组,但我有点不知道如何完成这项工作。结果将如下所示:
<div class="contacts" id="contact_list_a">
<h2>A</h2>
<div class="contact">John Abercrombie</div>
<div class="contact">Julie Aloters</div>
</div>
<div class="contacts" id="contact_list_b">
<h2>B</h2>
<div class="contact">Harry Bronson</div>
<div class="contact">Stevie Brussels</div>
</div>
...(continues)
由于我的经验不足,到目前为止我只看到两个选项:
1)我可以为字母表中的每个字母创建一个变量,并在每个合适的地方添加联系人。这会产生对数据库的大量调用(我假设),并且我的控制器中的大量变量似乎一点也不优雅。
2)我可以将模型中的所有联系人拉到一个变量中(我现在正在做的事情),然后在我的控制器中创建一个私有方法,该方法遍历数组并相应地分配新变量。这似乎仍然效率低下,但在我看来 #1 更好。
您能否深入了解一种更好的方法来做到这一点?我正在使用 Ruby 1.9.3 和 Rails 3.2.8。