2013-05-09 51 views
0

我正在尝试编写一个应用程序来计算生病/休假天数以及员工在任一类别中的可用人数。在我的员工模式中,vacation_days是由他们的雇用日期确定的值,sick_days对于所有员工都是相同的,并且是单独的“池”。我最近的一个障碍是试图确定如何从适当的池中减去他们的休假时间。如果......然后......语法问题

这里是我的员工型号:

class Employee < ActiveRecord::Base 

    def remaining_vacation_days 
    vacation_days - vacation_days_used 
    end 

    def remaining_sick_days 
    sick_days - sick_days_used 
    end 

    def vacation_days_used 
    if Furlough.description == "Vacation" 
     Furlough.duration 
    end 
    end 

    def sick_days_used 
    if Furlough.description == "Sick" 
    Furlough.duration 
    end 
    end 

有一个名为字符串列:在处理该日期范围(命名为休假)模型描述和形式是一个单选按钮,其中只有两个选项是'生病''假期'。然而,我在与得到的员工模型的语法正确的问题:

SyntaxError in Employees#index 

Showing /Users/ryrythefrenchfry/rails_projects/time_tracker/app/views/employees/index.html.erb where line #28 raised: 

/Users/ryrythefrenchfry/rails_projects/time_tracker/app/models/furlough.rb:24: syntax error, unexpected $end, expecting keyword_end 
    end 
    ^
Extracted source (around line #28): 

25:  <td></td> 
26:  <td><%= employee.years_employed %></td> 
27:  <td></td> 
28:  <td><%= employee.remaining_sick_days %></td> 
29:  <td></td> 
30:  <td><%= employee.remaining_vacation_days %></td> 
31:  <td></td> 

当我注释掉*高清vacation_days_used *和*高清sick_days_used *它经历,所以我知道这就是我的问题是的,但我只是没有足够的理解我在做什么,但在文档中找到答案。感谢您的帮助!

+2

的错误是在你的furlough.rb文件,所以您需要证明文件,而不是employee.rb文件。 – Doon 2013-05-09 14:23:14

+0

@fotanus在更多信息可用之前,这与Rails无关,而是Ruby代码问题。 – 2013-05-09 14:23:34

+0

哦,哎呀。是的,我必须在我的模型中切出一个结局。现在我的问题是完全不同的。我是否应该删除这篇文章,并从新问题开始或编辑它?什么是好的做法? – Alaric 2013-05-09 14:28:00

回答

2

您还缺少一个end的类。将它添加为模型文件的最后一行。

def sick_days_used 
    if Furlough.description == "Sick" 
     Furlough.duration 
    end 
    end 
end 
+0

哎呀,那是一个复制粘贴在我的实际模型中,我确实有这样的结果 – Alaric 2013-05-09 14:20:09

+0

......但不是在休假模式中,上帝,我真的把这个问题搞错了!:( – Alaric 2013-05-09 14:31:10

1

您错过了代码最后一行的“结尾”。

def sick_days_used 
    if Furlough.description == "Sick" 
    Furlough.duration 
    end 
    end 
end 

这是一个“结束”你的班级。

+0

Ack,这是一个复制粘贴错误。在我的实际模型中有'结束' – Alaric 2013-05-09 14:20:30

+0

...但是不在休假模型中Geez:我要去我的房间,想想我做了什么:( – Alaric 2013-05-09 14:31:55

1

这是更Rubyistic(根据您的情况):

def vacation_days_used 
    Furlough.duration if Furlough.description == "Vacation" 
end 

def sick_days_used 
    Furlough.duration if Furlough.description == "Sick" 
end 
+0

是真的,但是不相关,并且可以在评论中提供。 – 2013-05-09 14:27:47

+0

这相当于问题中的含义。 – pungoyal 2013-05-09 14:29:32

+0

根据OP的情况,这将降低“结束”冲突的可能性。因此我在这里写下了答案。 – 2013-05-09 14:29:47