2013-03-21 64 views
0

我正在構建一個簡單的庫存應用程序,用於跟蹤物品的數量。更新數量在Rails表格

在基本形式我會與任何任意數量的I型中更新item_quantity。

但我將如何創建一個表單/代碼,讓我對現有項目的頂部上標記+20數量?

在你看來:

<%= f.text_field :item_quantity, :id => 'item_quanity' %> 
<a href="#" id="increment_item_quantity">+20</a> 

在javascript中:

$(function() { 
    $('#increment_item_quantity').on('click', function(e) { 
    e.preventDefault(); 
    var currentVal = parseInt($('#item_quantity').val()); 
    $('#item_quantity').val(currentVal + 20); 
    }); 
}); 

你可能想

回答

1

你可以使用jQuery/JavaScript的

喜歡的東西做確保currentVal是一個數字(因爲parseInt('')=> NaN)

,然後提交照常

或者

如果你想通過一個表格來做到這一點:

在你看來:

<%= form_for @item, incr_quantity_path(@item) do |f| %> 
    <%= f.submit %> 
<% end %> 

然後在你的控制器:

def incr_quantity 
    @item = Item.find(params[:id]) 
    # I'd probably move the increment logic into the model 
    @item.quantity += 20 
    @item.save 
    # respond to it however you want 
end 

或如果你想通過增加該值的輸入的內容:

型號:

class Item < AR::Base 
    ... 
    attr_accessible :incr_quantity_by 

    def increment_quantity_by 
    quantity += incr_quantity_by 
    end 

    ... 
end 

查看:

<%= form_for @item, incr_quantity_path(@item) do |f| %> 
    <%= f.text_field :incr_quantity_by 
    <%= f.submit %> 
<% end %> 

控制器:

def incr_quantity 
    @item = Item.find(params[:id]) 
    @item.increment_quantity_by 
    @item.save 
    # respond to how you want 
end