Ruby 使用表单中提交的变量在数据库中存储计算
我正在提交一个简单的表单,其中包含数据库中命名的变量 我正在努力:Ruby 使用表单中提交的变量在数据库中存储计算,ruby,forms,variables,model,Ruby,Forms,Variables,Model,我正在提交一个简单的表单,其中包含数据库中命名的变量 我正在努力: 将提交的变量存储在数据库中(工作正常) 运行计算,然后将该值存储到数据库中 无论我尝试什么,我都会得到一个错误或'nil'(在@kcmil.inspect上)作为我的@kcmil结果。我假设在我当前的代码中,我没有将变量传递给模型,但即使它在控制器中也不起作用 我在这里不知所措。我在表单存储中提交的变量与预期一样好。我只想能够使用表单中提交的变量(也就是在提交时存储的数据库项),并在保存到数据库之前(或者之后,如果有关系的话?)
'nil'
(在@kcmil.inspect上)作为我的@kcmil
结果。我假设在我当前的代码中,我没有将变量传递给模型,但即使它在控制器中也不起作用
我在这里不知所措。我在表单存储中提交的变量与预期一样好。我只想能够使用表单中提交的变量(也就是在提交时存储的数据库项),并在保存到数据库之前(或者之后,如果有关系的话?)运行计算并将结果存储到数据库项中(之前未在表单中调用或从表单中保存)。这有意义吗?非常感谢任何帮助或提示
以下是我当前的计算器\u控制器创建和编辑操作:
def create
@calculator = Calculator.new(calc_params)
if @calculator.save
flash[:notice] = "Calculation created successfully."
redirect_to(:action => 'index')
else
render('new')
end
end
def update
@calculator = Calculator.find(params[:id])
if @calculator.update_attributes(calc_params)
flash[:notice] = "Calculation updated successfully."
redirect_to(:action => 'index', :id => @calculator.id)
else
render('edit')
end
end
private
def calc_params
params.require(:calculator).permit(:subsection, :amps, :volts, :distance, :vdrop, :phase, :kcmil, :section_id)
end
这是我的型号
class Calculator < ActiveRecord::Base
before_create :kcmil_calc
def kcmil_calc
if @phase == 1
self.kcmil = ((13 * @distance.to_i * @amps.to_i ) / @vdrop.to_i).round(2)
else
self.kcmil = ((12.9 * @distance.to_i * @amps.to_i ) / @vdrop.to_i).round(2)
end
end
end
类计算器
我拿到了!我知道了
before_update :defaults
def defaults
if self.phase == 1
self.kcmil = ((12.9 * distance * amps) / vdrop).round(2)
else
self.kcmil = ((13 * distance * amps) / vdrop).round(2)
end
end
解决了!我不得不调用self.phase
而不是@phase
,并在创建之前将更改为更新之前的,以使其正常工作。不需要更改控制器。该死-一个简单的@!我还删除了to_I,因为它不需要,因为我的视图阻止我提交除整数以外的任何内容