在Rails表单中更新数量

时间:2013-03-21 15:18:59

标签: ruby-on-rails-3 forms activerecord

我正在构建一个简单的广告资源应用,可以跟踪商品的数量。

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

但是,我如何创建一个表单/代码,允许我在现有商品数量的顶部标记+20?

1 个答案:

答案 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