我的Ruby on Rails应用程序中有一个基本表单。其中一个字段是根据其他字段计算的。如果验证失败,并且呈现new
操作,则会消除计算值。
class Model < ApplicationRecord
end
这是我的控制者:
class ModelsController < ApplicationController
def create
@model = Model.new(secure_params)
if @model.save
redirect_to @model
else
render 'new'
end
end
def secure_params
params.require(:model).permit(:count,:unitPrice,:totalPrice);
end
end
这是new.html.erb表单:
<%= form_with model: @model, local: true do |form| %>
<p>
<%= form.label :count %><br>
<%= form.number_field :count, id:'count' %>
</p>
<p>
<%= form.label :unitPrice %><br>
<%= form.number_field :unitPrice, id:'unitPrice' %>
</p>
<p>
<%= form.label :totalPrice %><br>
<%= form.number_field :totalPrice, id:'totalPrice' %>
</p>
<p>
<%= form.submit %>
</p>
<% end %>
<script>
function calculateTotalPrice(){
var count=$("#count").val();
var unitPrice=$("#unitPrice").val();
if(unitPrice && count ){
var totalPrice=parseFloat(unitPrice*count).toFixed(2);
$("#totalPrice").val(totalPrice);
}
}
$(document).ready(function(){
$("#count").bind('keyup mouseup',calculateTotalPrice);
$("#unitPrice").bind('keyup mouseup',calculateTotalPrice);
});
</script>
当我提交表单时,如果验证正常,则没有问题。但是如果模型有错误,则从模型中删除totalPrice值。我认为插入totalPrice字段的值不会注入Ruby模型。
我错过了什么?
感谢。
答案 0 :(得分:0)
jQuery看起来很好。
它可能被阻止,因为数字输入默认只接受整数值。将参数步骤设置为“any”将允许十进制值。尝试:
<%= form.number_field :totalPrice, id:'totalPrice', step: :any %>
另外,仔细检查totalPrice字段在Model中的类型是否为整数,而不是float或decimal。