2013-05-12 52 views
0

我想创建一个小型会计系统。在这里我有一些产品。每个月我都要记下每个用户购买的每件产品的数量。多个输入字段为多个用户的多个表格

可以说我有3个用户和4个产品。我需要一个3 * 4的表格,左边的所有用户名称和顶部的产品。在每个字段中,我希望能够写出用户购买的特别物品的数量。

我已经尝试过以下,但是这些字段并不是唯一的,所以只有最后一个被提交。我应该如何继续?

= simple_form_for(:lines, url: lines_url) do |f| 
    - @users.each do |user| 
    tr 
     td= user.name 
     - @products.each do |product| 
     td 
      = f.fields_for user do |u| 
      = u.fields_for product do |p| 
       = p.fields_for Line.new do |l| 
       = l.text_field :quantity 

编辑:

我发现,这也将工作,howver,这是相当的hackish:

= simple_form_for(:lines, url: lines_url) do |f| 
    - @users.each do |user| 
    tr 
     td= user.name 
     - @products.each do |product| 
     td 
      = text_field :lines, "#{user.id}][#{product.id}" 

注意的][text_field

回答

1

我有这个问题了几次,都拿出了这一点:

= simple_form_for(:lines, url: lines_url) do |f| 
    - @users.each_with_index do |user, index| 
    %tr 
     %td= user.name 
     - @products.each do |product| 
     %td 
      = f.fields_for user do |u| 
      = u.fields_for index do |u| 
       = u.fields_for product do |p| 
       = p.fields_for Line.new do |l| 
        = l.text_field :quantity 

fields_for index意味着它出来为lines[user][0][product][line]等,这是多么的钢轨通常提交多个对象的交易。参数进来:

{ 
    "0" => some_data, 
    "1" => some_other_data 
} 

这是有点奇怪,但它是如何看起来。我似乎记得在使用这种技术的时候,遇到了和你一样多的嵌套层次的问题,但它应该有助于给你一些想法。

+0

这真的是正确的解决方案吗?这似乎有点奇怪,我需要关心自己的索引。 – 2013-05-13 08:04:31

+0

我知道,它真的很烂,但我一直没有找到更好的。这看起来并不像Rails那样处理得很好,因为它不是标准的单条记录CRUD。 – RobHeaton 2013-05-13 08:54:51