【发布时间】:2017-11-22 17:50:55
【问题描述】:
我写了一个 Rails 表单,它工作正常,直到我添加了一个 javascript。此 javascript 汇总用户输入的字段值并将它们保存在总计字段中,因此用户不必手动总计。
这是我的代码:
<script type="text/javascript">
function findTotal(){
console.log("this is working")
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0;i<arr.length;i++){
if(parseInt(arr[i].value))
tot += parseInt(arr[i].value);
}
document.getElementById('total').value = tot;
}
</script>
<%= bootstrap_form_for(@payment) do |f| %>
<div class="field">
<%= f.text_field :student_id,label: "Admission Number of Student" %>
</div>
<div class="field">
<%= f.number_field :tuition_fee , onblur: "findTotal()", id: "qty1", name: "qty" %>
</div>
<div class="field">
<%= f.number_field :fine, onblur: "findTotal()", id: "qty2", name: "qty" %>
</div>
<div class="field">
<%= f.number_field :previous_books, onblur: "findTotal()", id: "qty3", name: "qty" %>
</div>
<div class="field">
<%= f.number_field :annual_fund, onblur: "findTotal()", id: "qty4", name: "qty" %>
</div>
<div class="field">
<%= f.hidden_field :total, name: "total", id: "total" %>
</div>
<div class="actions">
<%= f.submit class: "btn btn-success" %>
</div>
<% end %>
现在,当我填写表格时,该功能可以正常工作,并且提交按钮也会创建记录,但是在这些数字字段中输入的所有值都没有存储在数据库中,它显示为 nil。如果我从数字字段中删除它,这些工作正常。知道我做错了什么吗?谢谢。 编辑: 这是我的参数:
private
# Use callbacks to share common setup or constraints between actions.
def set_payment
@payment = Payment.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def payment_params
params.require(:payment).permit(:student_id, :section_id, :year, :month, :date, :payment_mode, :tuition_fee, :fine, :previous_books, :annual_fund, :total)
end
end
及相关控制器方法:
def create
@payment = Payment.new(payment_params)
@payment.student_id = Student.find_by_admission_number(@payment.student_id).id
@payment.section_id = Student.find(@payment.student_id).section_id
respond_to do |format|
if @payment.save
format.html { redirect_to new_payment_path, notice: 'Payment Record was successfully created.' }
format.json { render :show, status: :created, location: @payment }
else
format.html { render :new }
format.json { render json: @payment.errors, status: :unprocessable_entity }
end
end
end
【问题讨论】:
-
你能把参数和控制器动作也贴出来吗?
标签: javascript ruby-on-rails forms