У меня есть следующие параметры:
Parameters: {"utf8"=>"✓",
"authenticity_token"=>"06Us9R1wCPCJsD06TN7KIV/2ZeH4dJlZVqc12gpKBbo=",
"run"=>{"box_id"=>"1"}, "tapes"=>{"1"=>{"tape_id"=>"1"},
"2"=>{"tape_id"=>"2"}, "3"=>{"tape_id"=>"3"}}, "commit"=>"Create Run"}}
Я хочу создать новый «прогон» с идентификатором блока 1, а затем связать ленты 1, 2 и 3 с этим прогоном с идентификатором блока 1
Я не уверен, какой код должен войти в контроллер, я попробовал:
def create
@run = Run.new(params[:run])
@tape_ids = @run.build_tape(params[:run][:tapes])
@run.save
Когда я отправляю форму ниже, она создает новый прогон с правильным полем, но не связывает с ним ленты.
<%= form_for(@run) do |f| %>
<% if @run.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@run.errors.count, "error") %> prohibited this tape
from being saved:
</h2>
<ul>
<% @run.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :box_id %>
<br/>
<%= f.text_field :box_id %>
</div>
<% (1..3).each do |index| %>
<%= fields_for :tapes do |ff| %>
<div class="field">
<%= ff.label :tape_id , :index => index%>
<%= ff.text_field :tape_id, :index => index %>
</div>
<% end %>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>