我需要什么 - 某种方式来获取输入到表单中的数字,以便在更新之前根据以前的记录检查它,这样如果发生验证错误,可以在提交表单之前提示用户确认。参数可以工作,但只有在表单发布后才会返回 - 所以没有帮助。是否有可以传递给 ruby 变量的 ajax 调用?或者可能是某种 ruby 代码,可以在不提交或链接的情况下读取文本框中的输入?
我在做什么-我正在尝试设置“手动验证”,因为我不希望验证“阻止”保存。相反,它应该更像是一种确认。
如果你关心上下文,这里是破败——我有一个客户每月支付存款。我们通过第三方通过电话确认这些存款。当然,为了尽可能获得最准确的数据,我们必须考虑人为错误和其他因素。本月的存款永远不应少于上个月的存款——但存款可以从一个账户“转移”到另一个账户,这会使存款看起来更少。我有一个输入新数据的表格,我希望它与以前的记录核对,看看存款是多于还是少于以前报告的。如果少于,它应该要求确认——“你确定吗?” 之类的事情。
代码陈旧过时,应该从头开始更改,但是当我有几天的时间来做这件事时需要几个月的时间。我只是在找补丁。
到目前为止,请注意 cur_deposit 是本月,rec_deposit 是上个月。
<%
arr1 = []
arr2 = []
is_less = false
r = @recent_inquiries.last
r.inquiry_deposits.order(:id).each do |t|
arr1 << t.cur_deposit.to_f
arr1 << t.rec_deposit.to_f
end
@inquiry.inquiry_deposits.order(:id).each do |td|
#============THIS is the part that needs help
arr2 << params["cur_deposit_text_box"]
arr2 << params["rec_deposit_text_box"]
end
i = 0
while i < (arr1.size - 1)
comp_arr1 = []
comp_arr2 = []
comp_arr1 << arr1[i]
comp_arr1 << arr1[i + 1]
comp_arr2 << arr2[i]
comp_arr2 << arr2[i + 1]
if Inquiry.compare_deposits(comp_arr1, comp_arr2) != nil then is_less = true end
i = i + 2
end
if is_less
strConf = "A deposit from last month is greater than the same deposit this month, which should not happen. Are you sure?"
end
%>
<%= submit_tag "Save Inquiry", :onclick=>"$('#submit_form').val('Save Inquiry summary');", :class => 'tgButton3', :id => 'save_inquiry_button_bottom', :confirm => strConf %>
当我让这段代码工作时,我会将所有功能代码存储到一个模型中——我只是将它放在视图中进行测试。可以安全地假设此脚本调用的所有“自定义方法”都在运行。如果您需要他们的代码,我会很乐意分享。
导轨版本 3.0.20