2
私はレールフォームを書いて、それにjavascriptを追加するまでうまくいきました。このjavascriptは、フィールド値の合計をユーザーが入力して合計フィールドに保存するため、ユーザーは手動で合計する必要はありません。ここrails - データベースにファイル値を保存しないフォームフィールドに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 %>
は今、私は、フォームを記入する際、機能が正常に動作し、ボタンを提出するだけでなく、レコードが作成されますが、これらの数値フィールドに入力されたすべての値は、データベースに格納されていないとそれはゼロを示す。番号フィールドから削除しても問題ありません。私が間違って何をしているのか?ありがとう。 EDIT: ここでは私のparamsです:
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
は、あなたがのparamsを投稿できるとコントローラのアクションしてください:だから、あなたが提出しないとき、それは次のオブジェクトを生成しますか? – Eoghain