2013-05-12 83 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