如何解决 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 是用户定义的值。
我正在使用 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 是用户定义的值。