2015-04-01 67 views
1

我有一個要求,我們必須添加兩個文本字段並在第三個存儲爲字符串的值中插入值。 在下面的表格中,我想將數量和price_per_unit相乘,並將值存儲在只能讀取的total_amount字段中。 請幫幫我。如何在第三個文本字段中添加兩個文本字段值的rails形式?

這是我的形式:

<%=form_for([:invoice_detail,@multiple_good], html: {class: 'form-horizontal', role: 'form' }) do |f| %> 

    <div class="field"> 
     <%= f.label :description_of_goods, :class => 'control-label' %> 
     <div class="controls"> 
     <%= f.text_field :description_of_goods, :class => 'text_field', :required => true,:maxlength => 20, :placeholder => '20 Alpha numeric characters' %> 
     </div> 
    </div> 

    <div class="field"> 
     <%= f.label :quatity, :class => 'control-label' %> 
     <div class="controls"> 
     <%= f.text_field :quatity, :class => 'text_field', :required => true,:maxlength => 20, :placeholder => 'Enter quatity' %> 
     </div> 
    </div> 

    <div class="field"> 
     <%= f.label :price_per_unit, :class => 'control-label' %> 
     <div class="controls"> 
     <%= f.text_field :price_per_unit, :class => 'text_field', :placeholder => 'Enter price Per unit' %> 
     </div> 
    </div> 

    <div class="field"> 
     <%= f.label :total_amount, :class => 'control-label' %> 
     <div class="controls"> 
     <%= f.text_field :total_amount, :class => 'text_field', :placeholder => 'Enter Total Amount ' %> 
     </div> 
    </div> 

    <div class="form-actions2"style="text-align:center"> 
     <%= f.submit :class => 'btn btn-primary' %> 
    </div> 
    </div> 

<% end %> 

回答

3

可以有多種方式來做到這一點。

Suppossing,只有一列,total_amount在數據庫中,你可以在你的模型中得到attr_accessor,然後before_save,你可以設置total_amount。

如果你想要它像一個實時的東西,那麼你需要JS,這很容易。 您可以

<%= f.text_field :quatity, class: "text-field", id: "quantity" ... %> 
<%= f.text_field :price_per_unit, class: "text-field", id: "price-per-unit" ... %>" 
<%= f.text_field :total_amount, class: "text-field", id: "total-amount" .. readonly: true %> 

,然後在JS,

$(document).on("change", "#quantity #price", function() { 
    var price = $("#price").val() || 0, 
     quantity = $("#quantity").val() || 0; 
    $("#total-amount").val(price * quantity); 
}); 

但我可以說,這將是糟糕的,因爲我可以很容易地使用網絡督察刪除只讀並設置值自己。但是,如果您將pricequantity作爲數據庫字段,則您不必擔心在服務器端進行驗證。

+0

感謝您的回答。其實價格,數量和total_amount,都是數據庫領域。 – venkat 2015-04-01 05:11:32

+0

那麼,你應該明確地在模型中設置這個值,比如'before_save:proc {self.total_amount = price * quantity}'。 – argentum47 2015-04-01 05:19:10

+0

我越來越錯誤,因爲**無法將字符串轉換爲整數** – venkat 2015-04-01 05:28:12

0

試試這個JS添加兩個文本字段並在第三個文本字段中顯示總值,這個JS會自動更新文本字段中的總量而不點擊。

$(document).on("keyup", "#quantity, #price", function() { 
    var price = $("#price").val(); 
    var quantity = $("#quantity").val(); 
    var total = parseInt(price) * parseInt(quantity); 
    $("#total-amount").val(total); 
}); 

謝謝。

0
<script type='text/javascript'> 
$(document).on("keyup", "#item_cgst, #item_sgst", function() { 
var val1 = +$("#item_cgst").val(); 
var val2 = +$("#item_sgst").val(); 
$("#item_igst").val(val1+val2); 
}); 
</script> 

試試這個,它的工作對我來說..

相關問題