如何解决 Rails 4 中的数学表达式,例如 6000*70%?

How to solve Mathematical Expressions in Rails 4 like 6000*70%?

我正在使用 Dentaku gem 来解决一些复杂的小表达式,例如基本工资是总工资的 70%。由于公式是用户可编辑的,所以我在 dentaku 上工作。

当我写calculator = Dentaku::Calculator.new初始化然后输入命令calculator.evaluate("60000*70%")时出现如下错误:

Dentaku::ParseError: Dentaku::AST::Modulo requires numeric operands
from /Users/sulman/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/dentaku-2.0.8/lib/dentaku/ast/arithmetic.rb:11:in `initialize'

我有一个数组,其中的公式存储如下:["EarningItem-5","*","6","7","%"] 其中 EarningItem-5 是一个对象,其值为 60000

如何解析此类表达式?

Dentaku 似乎不支持 "percent"。试试这个

calculator.evaluate('60000 * 0.7')

对于这种特殊情况,您可以使用 basic_salary = gross_salary * 0.7

接下来,您需要在接受 0..100 范围的视图中创建数字字段。最后,设置 after_save 回调并使用此代码:

型号

after_create :percent_to_float

protected

def percent_to_float
  self.percent = percent / 100.0
  self.save
end

编辑: 当然,你可以简单地使用这个公式而不使用任何回调:

basic_salary = gross_salary / 100.0 * 70

其中 70 是用户定义的值。