我希望rails app的前两个用户输入的整数输入在按下提交按钮后对它们执行某些算术后填充第三个字段。
我使用过rails脚手架。
我是否在下面的控制器代码中将我想要执行的算术函数放在我的变量上?
# POST /pls
# POST /pls.json
def create
@pl = Pl.new(pl_params)
respond_to do |format|
if @pl.save
format.html { redirect_to @pl, notice: 'Pl was successfully created.' }
format.json { render :show, status: :created, location: @pl }
else
format.html { render :new }
format.json { render json: @pl.errors, status: :unprocessable_entity }
end
end
端
答案 0 :(得分:0)
你的问题不明确。但对于这一部分,答案是,
我是否在下面的控制器代码中将我想要执行的算术函数放在我的变量上?
最佳实践是使用模型方法执行算术运算。出于这个原因,您也可以使用私有控制器方法,并在您需要的地方调用该方法。但是将算术代码推送到create
动作中并不是一个好习惯。
答案 1 :(得分:0)
我在before_save
回调中实际放入您的Pl模型中的内容,以便如果您的两个用户输入值中的任何一个发生更改,则更新第三个值的值。它看起来像这样:
class Pl < ActiveRecord::Base
before_save :update_third_value
def update_third_value
if first_value_changed? || second_value_changed?
third_value = first_value / second_value # here is your desired arithmetic
end
end
end
查看默认情况下适用于所有型号的ActiveModel::Dirty和ActiveRecord::Callbacks,其中列出了所有可用的默认回调。