2017-09-13 6 views
0

enter image description here配列内の各名前ごとに個別のレコードを作成しようとしています。配列は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)コースから完全に離れている。

私が必要とするデータが得られているように見えますが、参加コントローラー(これは私が考える)でどのように使用する必要があるかは不明です。私はこれを何時間も続けていました。私は、データを保持するために結合コントローラに変数を作成する必要があるように感じます。ここでは、私はここに向かっていました。このコードの提案やこれを行うためのより効率的な方法をお寄せいただきありがとうございます。

+0

[OK]をにcreate_multiple方法を変更したいので、あなたがフォームで選択した各 'Keg'ため' BatchKeg'を作成しようとしていますか? "join"コントローラでそれをやっているようですが、 'BatchKeg' create呼び出しで' keg_id'を保存していないようです。私は本当に問題が何であるかは分かりません。いくつかのタイプミスがあるように、投稿したコードをクリーンアップしようとしてください。 –

+0

Ryanに返信してくれてありがとう!あなたは正しいです。私はBatchKegの各keg_idを保存しようとしています。私はユーザーIDが必要ですが、それを得るのは苦労したので、私はそれを削除して、その行を開いてそこから作業しようとしました。私は最初の投稿にエラーメッセージのスクリーンショットを追加したと思って、私はちょうど参照のためにそれを追加しました。 – kchucke

答えて

1

まあ、エラーメッセージはかなり明確です。パラメータとしてparamsbatch_kegs_idsに渡していますが、そのメソッドはパラメータを必要としません。また、batch_kegs_idsメソッドが空(コードなし)のように見えます。私はそれを完全に取り除くだろう(とにかくそこにいるはずはないだろう)。

私も

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

関連する問題