1

私は次のことをしようとしています:

index.html.erb

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

<script>
    $(function () {
        var chart;
        $(document).ready(function () {
            chart = new Highcharts.Chart({
                chart:{
                    renderTo:'container',
                    type:'column'
                },
                title:{
                    text:'<%= Date.today.strftime("%B")%> Overtime'
                },
                xAxis:{
                    categories:[

                        '<%= Date.today.strftime("%B")%>'

                    ]
                }, 
                yAxis:{
                    min:0,
                    title:{
                        text:'Hours'
                    }
                },
                legend:{
                    layout:'vertical',
                    backgroundColor:'#FFFFFF',
                    align:'left',
                    verticalAlign:'top',
                    x:100,
                    y:70,
                    floating:true,
                    shadow:true
                },
                tooltip:{
                    formatter:function () {
                        return '' +
                                'Hours' + ': ' + this.y;
                    },

                    credits:{
                        text:'migroup-.co.uk',
                        hreft:'http://wwww.migroup.co.uk'
                    }
                },
                plotOptions:{
                    column:{
                        pointPadding:0.4,
                        borderWidth:0
                    }
                },


                series:[
                    <% @user.hospital_bookings.each do |hospital_booking| %>

                    {
                        name:'<%= hospital_booking.try(:name)%>',
                        data:[<%= hospital_booking.sum(&:overtime)%>


                        ]
                        // color: '#8F8689',
                    },
                    <% end %>
                    {
                        name:'Total',
                        data: [<%= @hospital_bookings.to_a.sum(&:overtime)%>],
                        color:'#FE9D00'
                    }
                ]
            });
        });

    });


</script>

controller.rb

defインデックス

@user = User.all
@hospital_bookings = HospitalBooking.scope

エンドエンド

私がやろうとしているのは、ユーザーごとに、予約を繰り返し、合計することovertimeです。

モデル

User.rb 
has_many :hospital_bookings 

Hospital_booking
belongs_to :user

これが効果的に行うことは、ユーザーを取得し、残業時間を合計することです。しかし、何らかの理由でこれは機能していません。私が現在持っているのは、フォワードのように見えるハイチャートです。

Imgur。各バーは、個別の病院の予約とその残業を表しています。ただし、そのユーザーの残業を合計したいと思います。つまり、事実上、ユーザーごとに1つのバーがあります。

4

1 に答える 1

1

問題が発生しました、あなたはやっています:

@user = User.all
@user.hospital_bookings.each do |hospital_booking|
  ...
end

ただし、問題は、User.allを実行すると、単一のユーザーではなく、ユーザーの配列を取得することです。

@users = User.all
@users.each do |user|
  user.hospital_bookings.each do |hospital_booking|
  end
end

それは機能しますが、シングルユーザーの予約を表示したい場合があります。おそらく、次のようなことを行う必要があります。

@user = User.find(params[:id])
@user.hospital_bookings.each do |hospital_booking|
  ...
end

ところで、私は健康産業にも携わっています。いつでも気軽にpingしてください:)

于 2013-03-01T02:18:22.877 に答える