来自数组中名称列表的多个对象

来自数组中名称列表的多个对象

问题描述:

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

那么错误信息很清楚。您将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