2016-06-02 4 views
0

정말 간단한 요청이 있습니다. 특정 일 (예 : 2 열 : 킬로그램 및 일) 동안 사용자 가중치를 보유하는 테이블이 있습니다. 이제는 시간에 따라 사용자의 체중 감량을 보여주는 선 차트로 표시하려고합니다 (x 축 = 일, y 축 = kg).Rails에서 선형 차트로 데이터 시각화하기

Chartkick을 설치하면 차트가 렌더링되지만 실제로이 값을 선 차트로 가져 오는 방법을 알지 못합니다.

이 목적을 위해 Chartkick이 올바른 선택입니까? 그리고 그렇다면 내 코드는 어떻게 생겼을까요?

weight.rb

class Weight < ActiveRecord::Base 
    belongs_to :user 
    validates :day, uniqueness: { scope: :user_id, 
    message: "You already stored a weight today. Go back and edit if necessary." } 
end 

user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    after_create :create_profile 

    has_one :profile, dependent: :destroy 
    has_many :weights, dependent: :destroy 
end 
+0

를 작동해야 테이블은 무엇이라고? 그리고 그것을 어떻게 사용자 테이블에 연결하고 있습니까? – Carpela

+0

위의 게시물에서이 정보를 업데이트했습니다. 내 테이블은 "가중치"라고합니다. – Oliver

답변

0

이 해결책을 발견.

Chartkicks 문서는 말한다 :

시간 시간, 타임 스탬프, 또는 문자열 (문자열을 구문 분석) 그래서 모든 I에서 해시를 만드는 않았다

<%= line_chart({20.day.ago => 5, 1368174456 => 4, "2013-05-07 00:00:00 UTC" => 7}) %> 

을 할 수 있습니다 내 제안 된 형식의 가중치 테이블 ...

weights_controller.rb

,451,515,
@result = {} 
    Weight.where(:user_id => current_user.id).each do |weight| 
     @result[weight.day] = weight.kilograms 
    end 

... 그리고 라인 차트에서 이것을 사용 :

<%= line_chart(@result, min: nil) %> 
0

Chartkick 정확히 당신이 원하는 것을 할 것입니다.

특정 차트.

<%= line_chart User.weight_measurements.group_by(day).average(:weight) 

이 경우 나는 귀하의 날짜가 날짜가 아니라고 가정합니다. 그렇지 않으면 동일한 저자가 groupdate을 사용하는 것이 좋습니다.

<%= line_chart User.weight_measurements.group_by_day(day).average(:weight) 

이 그것을 할 수있는 청소기 방법은 아마하지만 그

관련 문제