【发布时间】:2016-04-09 17:05:54
【问题描述】:
我正在为竞赛排行榜构建一个 Rails 应用程序。数据模型是
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 个条目。我想允许用户在一个表单中输入所有 8 个条目,并带有一个提交按钮。
我的路线
resources :entries, except: [:index, :show] do
collection do
match 'create_collection', via: [:create]
end
end
我在 Entries 控制器中还有一个 create_collection 方法来处理条目,尽管我还没有做到这一点。我不确定如何让表单正常工作。
_form.html.haml(由views/tournaments/index.html.haml 部分渲染并传递next_events,这是锦标赛的2 个事件实例。
.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"
表单按我的预期显示,但是当我单击提交按钮时,只有最后 4 个条目在参数中提交,并且事件 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"}
如何获取两个事件的所有入口参数以使用正确的 event-id 提交?
【问题讨论】:
标签: ruby-on-rails-4 nested-forms nested-attributes form-helpers