0

另一个新手问题:我需要帮助正确地将我的病假天数、病假天数_已用、假期_天数和假期_天数_已用属性的默认值设置为零。我认为他们默认为 nil 并在创建新员工时使我的应用程序崩溃。

这是我得到的错误:

员工中的 NoMethodError#index

显示 /Users/ryrythefrenchfry/rails_projects/time_tracker/app/views/employees/index.html.erb 其中第 24 行提出:

用于 nil:NilClass 的未定义方法 `-' 提取的源代码(在 #24 行附近):

21:     <td><%= employee.first_name + " " + employee.last_name %></td>
22:     <td><%= employee.hire_date %></td>
23:     <td></td>
24:     <td><%= employee.remaining_sick_days %></td>
25:     <td></td>
26:     <td><%= employee.remaining_vacation_days %></td>
27:     <td></td>

这是我的模型:

  class Employee < ActiveRecord::Base
    attr_accessible :employee_id, :first_name, :hire_date, :last_name, :sick_days, :vacation_days, :sick_days_used, :vacation_days_used

   def remaining_sick_days
      sick_days - sick_days_used
   end

   def remaining_vacation_days
      vacation_days - vacation_days_used
   end
 end

感谢您慷慨地帮助这个肮脏的代码猴子。

4

3 回答 3

2

显然,您的 Employee 对象中的病假天数的值为 nil。这可能是因为在您创建 User 对象时它从未被初始化。

于 2013-05-03T14:51:10.860 回答
1

正如其他人所提到的,sick_days是零。您可以将错误解读为“减号左侧的对象为零”。

你可以尝试这样的事情:

def remaining_sick_days
   if sick_days.nil?
     0
   else 
     sick_days - sick_days_used
   end
end
于 2013-05-03T17:23:51.403 回答
0

检查您是否指定了病假天数。我建议您为此使用 gem pry:http ://railscasts.com/episodes/280-pry-with-rails并在您的代码中:

   def remaining_sick_days
      binding.pry
      sick_days - sick_days_used
   end
于 2013-05-03T14:51:32.330 回答