私は競合リーダーボードのためのレールアプリを構築しています。データモデルは複数のネストされたフォームを1つの送信ボタンで提出する
class Tournament
has_many :events
end
class User
has_many :entries
has_many :events, through: :entries
end
class Events
has_many :entries
belongs_to :tournament
end
class Entry
belongs_to :user
belongs_to :event
end
各トーナメント2つのイベントを有しており、ユーザがイベントあたり4つのエントリまで入力することができるので、トーナメントあたり8つのエントリの合計です。私は1つのフォームに1つの送信ボタンで8つのエントリーをすべて入力できるようにしたいと思います。
マイルート
resources :entries, except: [:index, :show] do
collection do
match 'create_collection', via: [:create]
end
end
私はこれまで、まだそれを持っていないのに、私はまた、エントリを処理するために、エントリのコントローラでCREATE_COLLECTIONメソッドを持っています。私はフォームが正しく動作するようにする方法がわかりません。ビュー/トーナメント/ index.html.hamlによってレンダリング部分であり、トーナメント2つのイベント・インスタンスであるnext_eventsを通過
_form.html.haml(
.entry-form
= form_tag create_collection_entries_path do |form|
- next_events.each do |event|
= event.name
= fields_for "events[]", event do |f|
- 4.times do
= f.fields_for :entries do |f|
= f.label_tag 'player'
= f.text_field 'player'
= submit_tag "Submit", class: "btn btn-success"
Iなどのフォームが表示され期待していたが、私は、送信ボタンをクリックしたときにのみ、最後の4つのエントリはのparamsに提出され、イベントIDが、私は両方のイベントのために、すべてのエントリのパラメータが正しいで提出することを得るにはどうすればよい
"events"=>[{"entries_attributes"=>
{"0"=>{"player"=>"player5","id"=>"33"},
"1"=>{"player"=>"player6", "id"=>"34"},
"2"=>{"player"=>"player7", "id"=>"35"},
"3"=>{"player"=>"player8", "id"=>"36"}}}],
"commit"=>"Submit"}
を渡されていませんイベントID?