2012-08-09 1 views
3

나는 acts_as_commentable_with_threading gem을 사용하고 있습니다. 이 젬은 'comment.children'메소드를 포함하는데, 이것은 모든 자식 주석의 해시를 생성합니다. 기본적으로 children은 created_at ASC에 의해 순서를 지정합니다. 나는 아이들이 주문되는 방식을 바꾸고 싶지만, 내가 아는 한이 방법을 직접 편집 할 수는 없다. 대신에, 그래서 같이보기에서 순서를 바꿀려고 노력했습니다레일 :보기 내에서 주문

<% @comments = comment.children.order('created_at DESC') %> 

불행하게도,이 효과가 없습니다. 내가 뭘 잘못하고 있는거야?

+0

이 저장소 2 년 전 보석, 그래서 더 이상 유지되지 않는 것 같습니다되는 마지막 커밋. –

+0

아마 내가 잘못 읽고 있지만 마지막 커밋이 [3 개월 전] (https://github.com/elight/acts_as_commentable_with_threading/commits/master)처럼 보입니다. – nullnullnull

+0

예,이 버전은 충분히 신선합니다. Google은 종종 오래된 것을 찾습니다. 내게는 https://github.com/ChristianPeters/acts_as_commentable_with_threading을 발견했습니다. 같은 보석 이름. –

답변

6

배열과 해시에 대해서는 sort을 사용해야합니다.

<% @comments = comment.children.sort { |a,b| b.created_at <=> a.created_at } %> 

참조 : http://apidock.com/ruby/Enumerable/sort

+0

당신의 솔루션은 확실히 작동하지만 여러 소스에서 가능한 한 .order를 사용하는 것이 더 좋으며 데이터베이스에서 .order를 처리하는 것이 더 빠릅니다. Array가 이미 데이터베이스에 의해 생성 되었기 때문에 .order 접근 방식이 작동하지 않는다고 가정합니다. 그래서 내가 할 수있는 일은 .sort로 배열을 조작하는 것입니다. – nullnullnull

+0

저는 Ruby의 마법사가 아니기 때문에 다른 사람들도 저를 잘못 생각할 수도 있습니다. 그러나 배열에 대한'order' 메소드가없는 것으로 보입니다. http://www.ruby-doc.org/core-1.9.3/Array.html – depa

+0

누군가가 .order를 사용하는 방법을 알고있는 경우에 대비하여 조금 더 기다려야합니다. 그렇지 않으면, 이것은 많은 의미를 가지며 내일 아침에 당신의 대답을 받아 들일 것입니다. – nullnullnull