2017-12-10 25 views
1

저는 최신 Chartkick 2.2.5 및 Rails 5.1.4를 사용하고 있으며 단위 (차량) 및 해당 상태 (사용 가능/사용 불가/등) 차트 킥을 통해 카운트와 그래프를 얻을 수 있습니다.Chartkick, groupdate없이 오브젝트를 그룹화하고 Ruby에서 group_by를 사용합니다.

enter image description here

그래서는 상태 반복거야하지만의 단위 수를 표시하지 않습니다 :이 다음 화면에 결과

<%= column_chart Status.includes(:units).order("name asc").map {|s| {name: s.name, data: s.units.group_by{|u| u.name}.count}}, library: {backgroundColor: "#F8F8F8"} %> 

: 여기

처럼 내보기 코드는 모습입니다 각 상태. 아마 내 루비가 틀렸거나 아마도 group_by가 내가 찾고있는 것이 아니 겠지. 그러나 나는 이것에 약간의 도움을 기대하고 있었다.

그룹 다이어그램이 설치되어 있고 일별/주별/월별로 다른 개체를 그래프로 표시하고 있습니다. 그러나이 특정 그래프에는 상태별로 각 장치의 원시 카운트가 필요하며 어떤 방법으로 접근 할 것인지 확실하지 않습니다. 나는 계속 구글과 루비 API 문서를 참조 할 것이다. 그러나 그 동안 도움이 필요하다.

업데이트

나는이 일부 진전을, 그러나에서 상태 (두 단위에 할당 "서비스의 부족"이 예에서) 두 개 이상의 기기에 할당 된 경우 다음 단위는 두 배 표시 당신은 그림에서 볼 수 있습니다. 여기

<%= column_chart Status.joins(:units).order("name asc").map {|s| {name: s.name, data: s.units.group('units.name').count}}, library: {backgroundColor: "#F8F8F8"} %> 

결과 :

enter image description here

그래서 나는 결과가 별개의 또는 고유하게 드릴 수 없습니다 내 루비 어딘가에있을 여기 내 업데이트 된 코드입니다. 나는 상태 및 단위 모두에 uniq을 호출 해 보았습니다. 그리고 클래스에 대해 정의되지 않은 방법으로 오류가 발생했으며 그룹 대신 group_by을 제안합니다.

단위 중 하나를 다른 단위에서 사용하지 않는 다른 상태로 변경하면 차트가 제대로 표시되므로 Ruby가 janky이고 약간의 도움이 필요하다고 생각합니다.

+0

너를 투표 해. 공유 해 주셔서 감사합니다 – tmow

+0

잘 모릅니다. – nulltek

답변

1

난 여전히 상태 및 단위의 순서에 일하고 있어요,하지만 난과 같이 메소드 체인 .uniq을 추가하여 서로 다른 결과를 얻을 수 있었다 : 나는 왜 얻지 않는다

Status.joins(:units).uniq.map {|s| {name: s.name, data: s.units.group(:name).count}}