未定义的局部变量或方法`user'

时间:2013-03-01 01:24:11

标签: ruby-on-rails ruby-on-rails-3

我正在尝试执行以下操作:

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 index

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

端 端

我要做的是为每个用户,迭代他们的预订并总结他们的overtime

模型

User.rb 
has_many :hospital_bookings 

Hospital_booking
belongs_to :user

这将有效地做到的是让用户和他们的加班时间相加。但由于某种原因,这是行不通的。我现在所拥有的是看起来像前锋的高等领域:

Imgur。每个酒吧代表一个单独的医院预订和他们的加班。但是我想将用户加班加起来。所以实际上每个用户只有一个吧。

1 个答案:

答案 0 :(得分: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
顺便说一句,我也是健康产业的,随时可以随便打电话给我:)