Rails - 显示商品价格并添加到总价格

时间:2014-05-26 22:20:38

标签: ruby-on-rails simple-form

我有一个表单,它在select2下拉框中显示项目,但我还要显示该项目的价格,并输入将显示总价格的数量。使用具有这些附加功能的select2 gem会很好,但我不知道如何做到这一点。

我必须知道选择了哪个项目,然后从表中提取价格。

表格

<%= simple_form_for(@order) do |f| %>
  <%= f.error_notification %>
    <%= f.input :code %>    

    <%= f.association :items, collection: Item.all, label_method: :name, value_method: :id, prompt: "Choose an item", input_html: { id: 'item-select2' } %>
    <%= f.submit %>
<% end %>

Talbe

  create_table "items", force: true do |t|
    t.string   "name"
    t.decimal  "price"
    t.integer  "quantity"
    t.decimal  "discount"
  end
  create_table "orders", force: true do |t|
    t.string   "code"
    t.integer  "user_id"
  end
  create_table "order_items", force: true do |t|
    t.integer  "item_id"
    t.integer  "order_id"
    t.integer  "quantity"
    t.decimal  "price"
  end

1 个答案:

答案 0 :(得分:1)

你必须使用AJAX。 假设我们有一个表格( order ),我们有一个表格( order_items )。我们将添加包含一些好东西的行( items ),它们的价格和数量。假设用户已经打开了新订单并添加了新行。在行中,我们将选项与项目相对应,跨度价格和文本字段数量。在表格下方,我们有总计

  1. 用户选择项目。选择项目后,我们会拨打&#39; on_change&#39;这个选择的javascript事件。
  2. 在该调用中,我们向项目控制器(方法&#39;显示&#39;)发送了AJAX请求,其中包含所选项目的ID。在控制器#show中,我们找到了我们的项目并将其作为json返回给客户端。
  3. 在客户端,我们有一个javasript对象。使用javascript我们将 item.price 放在span price 中。
  4. 另一个&#39; on_change&#39;我们必须要求数量文本字段。当数量改变时,我们迭代所有行,计算每行的总和,并在结果可变的情况下确定它。然后我们将此结果放在范围内。