我有一个简单的 Ruby 财务应用程序,可以跟踪用户的支出并根据它们生成报告。
费用属于不同的类别,这会影响每项费用中有多少是税收。
在我生成费用报告的代码中,我有这样一段:
tax_totals = [0] * 13
totals = [0] * 13
expenses.each do |expense|
tax_ratio = tax_rate/(1+tax_rate)
category = Category.find(expense.category_id).first
tax_ratio *= category.tax_rate.to_f / 100
if !expense.rate_id.nil?
subcategory = Rate.where("id = ?", expense.rate_id).first
tax_ratio *= subcategory.tax_rate.to_f
end
tax_totals[expense.transaction_date.to_date.month] +=
(expense.amount * tax_ratio)
totals[expense.transaction_date.to_date.month] += expense.amount
end
我不断收到一条语法错误tax_ratio = tax_rate/(1+tax_rate)
:
syntax error, unexpected '(', expecting keyword_end
如果我删除该行,错误将移至tax_ratio *= category.tax_rate.to_f / 100
行:
syntax error, unexpected tINTEGER, expecting keyword_end
我不知道这是从哪里来的。我根本看不出代码有什么问题。我在多个函数中有非常相似的代码,每个函数的计算略有不同。但只有这一个是一个问题。
也许是缺乏咖啡因。这段代码有问题吗?文件中是否还有其他原因导致此问题?如何继续调试?
干杯!
编辑:我想通了。红宝石菜鸟错误。请参阅下面的答案。