我正在尝试为数组中的每个名称创建单独的记录。数组通过一个控制器中的表单发起,并且各个记录需要保存在一个连接(类型)表中(我知道mongo中没有" join"表,但它是最好的描述它的方式)。目前使用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>
Originating Controller 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)完全偏离正轨。
看起来我得到了我需要的数据,但我不知道如何在连接控制器中使用它(我想),我已经在这上面了好几个小时,我的大脑是玉米粥。我觉得我需要在join控制器中创建一个变量来保存数据,这就是我的目标。提前感谢您对此代码的任何建议,或者更有效的方法。
答案 0 :(得分: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