1

나는 모든 아티스트의 목록을 표시하는 간단한 레일 블로그를 가지고 있으며 그룹 번호로 시작하는 모든 그룹을 0-9, a, b, c, d 다음으로 a, b, c, d은 해당 문자로 시작하는 아티스트를 표시합니다.숫자로 시작하는 모든 레코더를 그룹화하는 방법

현재 문자를 그룹화 할 수 있지만 숫자를 단일 그룹에 병합하는 방법을 알지 못합니다. 내가 가진 것은 0, 1, 2 ... 9 여기서 0..9은 배열의 단일 그룹입니다.

내 컨트롤러 코드는

@artists = Artist.order(name: :asc).group_by{|u| u.name[0].upcase} 

이하 나의 분류 코드 나는 모든 괜찮 여기 http://netpod.site.com.ng/artists 하는의이이 나에게 결과를 제공

<% @artists.each do |letter, artists| -%> 
    <h4><%= letter %></h4> 
    <ul> 
    <% artists.first(4).each do |artist| -%> 
     <li><%= render artist %></li> 
    <% end -%> 
    </ul>    
<% end %> 

입니다. 하지만 숫자를 하나의 배열 집합으로 그룹화하려고합니다.

답변

2

는 내가 100 % 정확하게 문제를 이해 모르겠지만 난 당신이 뭔가를 찾고 생각 : 반환

["12-d", "50 cent", "ACDC", "Mr Cool"].group_by{ |artist| ((artist =~ /[0-9]/) ? "numbers" : artist[0]) } 

:

{"numbers"=>["12-d", "50 cent"], "A"=>["ACDC"], "M"=>["Mr Cool"]} 
+0

완벽. '@artists = Artist.order (name : : asc) .group_by {| 아티스트 | (artist.name = ~/[0-9] /)? "0-9": artist.name [0])} 감사합니다. – Uchenna

+0

@UchennaOkafor 당신을 진심으로 환영합니다. – wpp

관련 문제