2012-12-13 2 views
0

문제가 있습니다. 내가 배열을 통해 고유 한 요소를 얻고 레일즈 루비에서 그룹화하는 방법

Url     Tags 
www.mrabhiram.tumblr.com abhi,blog 
google.com     google,blog 

사람이 나를를 제공 할 수

로 싶어,

Url     Tags 
www.mrabhiram.tumblr.com abhi 
www.mrabhiram.tumblr.com blog 
google.com     google 
google.com     blog 

그러나 : 코드 아래에이

<table > 
<tr> 
    <th>Url</th> 
    <th>Tags</th> 
</tr> 
<% @array_bookmark = @bookmark.class == Array ? @bookmark : [@bookmark] %> 
<% Array(@bookmark).each do |book| %> 
<tr> 
<td><%= book.url %></td> 
<td><%= book.tags %></td> 
</tr> 
<% end %> 
</table> 

이 뭔가를 산출 레일에 루비의 견해 코드 해결책? 배열을 반복 할 수있을 정도로 충분히 포괄적이어야합니다.

미리 감사드립니다.

답변

1
<% Array(@bookmark).group_by {|b| b.url}.each do |url, books| %> 
    <tr> 
    <td><%= url %></td> 
    <td><%= books.map {|b| b.tags}.flatten.uniq.join(" ") %></td> 
    </tr> 
<% end %> 
+0

굉장 ... 고마워. –

0
<% Array(@bookmark).uniq.each do |book| %> 
<tr> 
<td><%= book.url %></td> 
    <td><%= book.tags %></td> 
</tr> 
<% end %> 

위가 작동합니다.

+0

아니 작동하지 않습니다. 그것은 같은 것을주고 있습니다. –

1

사용 GROUP_BY 문

UPD

<% Array(@bookmark).group_by(&:url).each do |url, books| %> 
<tr> 
<td><%= url %></td> 
<td><%= books.map(&:tags).flatten.join(',') %></td> 
</tr> 
+1

'tags'는 도서의 배열입니다. –

+0

@ValeryKvon. –

+0

논리가 정확합니다. 그룹을 얻었다. 그러나 다른 요소가 있습니다. 나는 그것을 얻었습니다. 위의 대답을보세요. –

관련 문제