另一个新手问题:我需要帮助正确设置我的sick_days,sick_days_used,vacation_days和vacation_days_used属性的默认值为零。我认为他们在创建新员工时默认为nil并崩溃我的应用程序。
这是我得到的错误:
员工#index 中的NoMethodError
显示/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
感谢您慷慨地帮助这个笨拙的代码猴。
答案 0 :(得分:2)
显然,您的Employee对象中的sick_days值为nil。这可能是因为它在您创建User对象时从未初始化。
答案 1 :(得分:1)
正如其他人所说,sick_days
是零。您可以将错误读作“减号左侧的对象为零”。
您可以尝试这样的事情:
def remaining_sick_days
if sick_days.nil?
0
else
sick_days - sick_days_used
end
end
答案 2 :(得分:0)
检查您是否指定了病假。我建议你使用gem pry:http://railscasts.com/episodes/280-pry-with-rails并在你的代码中使用:
def remaining_sick_days
binding.pry
sick_days - sick_days_used
end