我正在构建一个简单的广告资源应用,可以跟踪商品的数量。
在基本形式中,我将使用我输入的任意数字更新item_quantity。
但是,我如何创建一个表单/代码,允许我在现有商品数量的顶部标记+20?
答案 0 :(得分:1)
你可以用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('')=&gt; 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