来自数组中名称列表的多个对象
我试图为数组中的每个名称创建单独的记录。这个数组通过一个控制器中的表单产生,并且单独的记录需要保存在一个连接(类型)表中(我知道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)完全偏离过程。
它看起来像我得到的数据,我需要通过,但不清楚我需要如何使用它在加入控制器(我认为),我已经在这上好几个小时,我的大脑是糊涂的。我觉得我需要在连接控制器中创建一个变量来保存数据,这就是我在这里所做的。预先感谢对此代码的任何建议,或者更有效的方式来执行此操作。
那么错误信息很清楚。您将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
你是救生员先生。谢谢。对于这些错别字,我很抱歉,我是全新的编程和本站,并以某种方式将错误消息图像的标签粘贴到我的文章中的代码中,我感谢您的耐心。 – kchucke
好了,你要创建一个'BatchKeg'每个'Keg'在窗体中选择?看起来你在“连接”控制器中这样做了,但是你并没有将'keg_id'保存在'BatchKeg'创建调用中。我不确定问题是什么。请尽量清理您发布的代码,因为这似乎存在一些错别字。 –
感谢您回复瑞恩!你是对的。我试图将每个keg_id保存在BatchKeg中。我确实需要用户ID,但很难获得它,所以我删除它试图尝试打开线路并从那里开始工作。我以为我添加了一个错误信息的屏幕截图到最初的帖子,我只是添加它作为参考。 – kchucke