必要なもの-フォームに入力された番号を取得して、更新前の以前のレコードと照合して、検証エラーが発生した場合にフォームを送信する前に確認するように求める方法が必要です。パラメータは機能しますが、フォームが投稿された後にのみ返されるため、助けにはなりません。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 %>
このコードが機能するようになったら、機能するすべてのコードをモデルに隠します。テスト用にビューに表示するだけです。このスクリプトが呼び出すすべての「カスタム メソッド」が機能していると想定しても問題ありません。それらのコードが必要な場合は、喜んで共有します。
Rails バージョン 3.0.20