Как сгруппировать список символов или цифр в символ # - PullRequest
2 голосов
/ 22 июля 2011

Я пытаюсь создать словарь терминов, упорядоченных в алфавитном порядке, как в этом примере:

 -A-
 Alpha
 ATM

 -B-
 Beta
 ...

У меня нет проблем с группированием терминов по буквам, но мне интересно, как я могу управлять символами и цифрами, чтобы сгруппировать их через символ #

-#-
52 weeks low
@test

Я решил добавить в свою таблицу терминов столбец, в котором я указываю первую букву (например, в случае символа я выбрал бы "#" в поле выбора), но мне было бы приятно узнать, есть ли лучший способ добиться этого без добавления другого поля.

Как информация, вот мой контроллер:

@terms = Term.all.group_by{|t| t.name[0]}

и мой взгляд:

<% @terms.keys.sort.each do |first_letter| %>
  <%= first_letter %>
  <% @terms[first_letter].each do |term| %>
    <%= term.name %>
  <% end %>
<% end %>

Спасибо за вашу помощь!

1 Ответ

4 голосов
/ 22 июля 2011

Вы можете сделать это следующим образом, может быть снижение производительности, но выполняет свою работу:

@terms = Term.all.group_by{|t| t.name[0].capitalize.match(/[A-Z]/) ? t.name[0].capitalize : "#" }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...