我正在构建一个简单的库存应用程序来跟踪物品的数量。
在基本形式中,我将使用我输入的任意数字来更新 item_quantity。
但是我将如何创建一个表单/代码,允许我在现有项目数量之上标记 +20?
我正在构建一个简单的库存应用程序来跟踪物品的数量。
在基本形式中,我将使用我输入的任意数字来更新 item_quantity。
但是我将如何创建一个表单/代码,允许我在现有项目数量之上标记 +20?
你可以用 jquery/javascript 来做
就像是:
在您看来:
<%= 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);
});
});
您可能想确保 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