配列内の各名前ごとに個別のレコードを作成しようとしています。配列は1つのコントローラのフォームを介して生成され、個々のレコードはjoin(type)テーブルに保存する必要があります(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>
発信コントローラーの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)コースから完全に離れている。
私が必要とするデータが得られているように見えますが、参加コントローラー(これは私が考える)でどのように使用する必要があるかは不明です。私はこれを何時間も続けていました。私は、データを保持するために結合コントローラに変数を作成する必要があるように感じます。ここでは、私はここに向かっていました。このコードの提案やこれを行うためのより効率的な方法をお寄せいただきありがとうございます。
[OK]をに
create_multiple
方法を変更したいので、あなたがフォームで選択した各 'Keg'ため' BatchKeg'を作成しようとしていますか? "join"コントローラでそれをやっているようですが、 'BatchKeg' create呼び出しで' keg_id'を保存していないようです。私は本当に問題が何であるかは分かりません。いくつかのタイプミスがあるように、投稿したコードをクリーンアップしようとしてください。 –Ryanに返信してくれてありがとう!あなたは正しいです。私はBatchKegの各keg_idを保存しようとしています。私はユーザーIDが必要ですが、それを得るのは苦労したので、私はそれを削除して、その行を開いてそこから作業しようとしました。私は最初の投稿にエラーメッセージのスクリーンショットを追加したと思って、私はちょうど参照のためにそれを追加しました。 – kchucke