0
我正在制作工资薪金系统。我只需要选择一个月,一年,按“创造就业”,并为所有的老师未初始化的常量Payroll_Manager :: Teachers
创造就业我创建的方法payroll_controller.rb“创造”:
Payroll_Manager.new(params[:month], params[:year]).crear_liquidaciones_del_periodo()
的Payroll_Manager是在文件app /佣工/ payroll_manager.rb
class Payroll_Manager < PayrollsController
def initialize(month, year)
@month = month
@year = year
end
def crear_liquidaciones_del_periodo
Teachers.each do |t|
t.payrolls.create(@month, @year)
end
end
end
最后,我有CODEL payroll.rb
class Payroll < ActiveRecord::Base
belongs_to :teacher
has_many :payroll_lines
def period
period = month + " " + year
end
validates :month, presence: true
validates :year, presence: true
class Payroll < ActiveRecord::Base
#gross_total, retention_total, neto_total
before_save :calculate_payroll
private
def calculate_payroll
calculate_gross_total
calculate_retention_total
calculate_net_total
end
def calculate_gross_total
self.gross_total = 0
## Concepto.where(type: 1)
haberes = Concepts.all.select{ |c| c.type == 1 }
haberes.each do |h|
parametros_para_linea = {concept_id: h.id, subtotal: h.amount}
self.payroll_line.create(parametros_para_linea)
self.gross_total += h.amount
end
end
def calculate_retention_total
self.retention_total = 0
## Concepto.where(type: 0)
retencion = Concepts.all.select{ |c| c.type == 0 }
retencion.each do |r|
parametros_para_linea = {concept_id: h.id, subtotal: h.amount}
self.payroll_line.create(parametros_para_linea)
self.retention_total += r.amount
end
end
def calculate_net_total
self.net_total = gross_total - retention_total
end
end
end
...当我点击 “创建工资单” 按钮,我有错误:
uninitialized constant Payroll_Manager::Teachers
请帮助我。
你为什么在payroll.rb中两次使用'class Payroll'类。它只需要一次。 – Sravan
您的帮助器继承自PayrollsController,并且您尝试从PayrollsController本身内部实例化,这将永远不会工作。几个问题:一个帮手应该是一个模块,而不是一个班级;你不应该混合使用蛇和骆驼案例(即将Payroll_Manager重命名为PayrollManager),教师不存在,很可能你的意思是教师。 – taglia