2017-09-13 122 views
0

enter image description here我試圖爲數組中的每個名稱創建單獨的記錄。這個數組通過一個控制器中的表單產生,並且單獨的記錄需要保存在一個連接(類型)表中(我知道mongo中沒有「連接」表,但它是描述它的最好方式)。目前使用Mongoid/MongoDB運行Rails 5。來自數組中名稱列表的多個對象

始發形式:

<%= form_tag create_multiple_batch_keg_index_path, method: 
     :create do |form|%> 
     <div class="field"> 
     <table class="table table-hover table-condensed"> 
     <thead> 
     <tr> 
      <th>Select All</th> 
      <th>Keg Name</th> 
     </tr> 
     </thead> 
     <tbody> 
      <% Keg.each do |batch_keg| %> 
       <tr> 
       <td><%= check_box_tag 'batch_keg_ids[]', batch_keg.id 
       -%> </td> 
       <td><%= batch_keg.name -%> </td> 
       </tr> 
      <% end %> 
     </tbody> 
     </table> 
     </div> 

最初的控制器PARAMS:

def batch_params 
    params.require(:batch).permit(:batch_keg_attributes => [keg_id, 
    :active, :visible, :wholesale_inventory, :taproom_inventory, 
    :hold_inventory]) 
    end 

加入控制器

def create_multiple 
    batch_keg_ids(params).flatted.map{|ids| 
    BatchKeg.create(:wholesale_inventory => true, :taproom_inventory 
    => true, :hold_inventory => false, :active => true, :visible => 
    true)}redirect_to batches_url 
    end 

路線

resources :batch_keg do 
    collection do 
     post :create_multiple 
     put :update_multiple 
     get :collection 
    end 
    end 

我想我已經成功完成了大部分流程(我已經完成了幾個錯誤消息,但是我被卡住了)。我在遍尋網絡的各個地方搜尋,試圖尋找解決方案,但一直未能找到一個有效的解決方案。我要麼是A),關閉但不是完全在那裏,或者B)完全偏離過程。

它看起來像我得到的數據,我需要通過,但不清楚我需要如何使用它在加入控制器(我認爲),我已經在這上好幾個小時,我的大腦是糊塗的。我覺得我需要在連接控制器中創建一個變量來保存數據,這就是我在這裏所做的。預先感謝對此代碼的任何建議,或者更有效的方式來執行此操作。

+0

好了,你要創建一個'BatchKeg'每個'Keg'在窗體中選擇?看起來你在「連接」控制器中這樣做了,但是你並沒有將'keg_id'保存在'BatchKeg'創建調用中。我不確定問題是什麼。請儘量清理您發佈的代碼,因爲這似乎存在一些錯別字。 –

+0

感謝您回覆瑞恩!你是對的。我試圖將每個keg_id保存在BatchKeg中。我確實需要用戶ID,但很難獲得它,所以我刪除它試圖嘗試打開線路並從那裏開始工作。我以爲我添加了一個錯誤信息的屏幕截圖到最初的帖子,我只是添加它作爲參考。 – kchucke

回答

1

那麼錯誤信息很清楚。您將params作爲參數傳遞給batch_kegs_ids,但該方法不需要參數。此外,它看起來像batch_kegs_ids方法是空的(無代碼)。我會完全刪除它(可能不應該在那裏)。

我也想改變create_multiple方法

def create_multiple 
    params[:batch_keg_ids].each do |id| 
    BatchKeg.create(keg_id: id, wholesale_inventory: true, taproom_inventory: true, hold_inventory: false, active: true, visible: true) 
    end 
    redirect_to batches_url 
end 
+1

你是救生員先生。謝謝。對於這些錯別字,我很抱歉,我是全新的編程和本站,並以某種方式將錯誤消息圖像的標籤粘貼到我的文章中的代碼中,我感謝您的耐心。 – kchucke

相關問題