0

我正在构建一个简单的库存应用程序来跟踪物品的数量。

在基本形式中,我将使用我输入的任意数字来更新 item_quantity。

但是我将如何创建一个表单/代码,允许我在现有项目数量之上标记 +20?

4

1 回答 1

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('') => 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
于 2013-03-21T15:28:05.073 回答