批量插入导轨

时间:2017-07-07 12:18:18

标签: ruby-on-rails bulkinsert table-relationships

我无法解决以下问题 任何帮助或建议表示赞赏

代理商在他所在地区从一个商店到另一个商店的纸张上收集产品订单。

在一天结束时,他会将每件商品的数量插入每个商店。

每家商店订购超过4种产品。

我需要设计能够批量插入。

<table>
  <tr>
    <td>Shop1</td>
    <td>Product1</td>
    <td>Product2</td>
    <td>Product3</td>
    <td>Product4</td>
    etc...
  </tr>
  <tr>
    <td>Shop2</td>
    <td>Product1</td>
    <td>Product2</td>
    <td>Product3</td>
    <td>Product4</td>
    etc...
  </tr>
  etc...
</table>

在浏览器中,它需要如下所示 enter image description here

1 个答案:

答案 0 :(得分:1)

一种方法可能是使用自定义表单模型。 This是关于这个主题的非常好的指南。这可能不完美,但至少应该让你走上正确的轨道。以下所有内容(针对您的问题稍作修改)代码都会从上面链接的博客转到Sam Slotsky。阅读帖子了解每件作品的更多细节。

这是自定义表单模型:

class ProductForm
  include ActiveModel::Model

  attr_accessor :products

  def products_attributes=(attributes)
    @products ||= []
    attributes.each do |i, product_params|
      @products.push(Product.new(product_params))
    end
  end
end

这是控制器:

class ProductsController < ApplicationController
  def new
    @product_Form = ProductForm.new(products: [Product.new])
  end

  def create
    @product_form = ProductForm.new(params[:product_form])

    if @product_form.save
      flash[:notice] = "Created products"
      redirect_to root_path
    else
      flash[:notice] = "There were errors"
      render :new
    end
  end
end

以下是观点:

<div>
  <%= form_for @product_form, url: products_path, method: :post do |f| %>
    <%= f.fields_for :products do |c| %>
      <%= c.text_field :attr_1 %>
      <%= c.text_field :attr_2
      <%- # ... etc ... %>
    <% end %>

    <p>
      <%= f.submit "Submit" %>
    </p>
  <% end %>
</div>