我有以下參數:訪問PARAMS內部的參數陣列[]值
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的盒ID,然後建立關聯的帶1 2和3與1
盒ID此運行,我不知道是什麼代碼需要去到控制器中,我曾嘗試:
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 %>
待辦事項你在運行模型中使用'acceptersted_attributes_for:tapes'?爲什麼你不使用嵌套形式的tape_ids? – Hck
@hcK我可以做的,運行模型是磁帶和盒子的連接模型。我已經有一個磁帶和盒子的列表,我需要創建一個表單,您可以將24個現有磁帶關聯到一個盒子,因此我瞭解嵌套表單是爲了創建新對象。 – haXs
build_tape應該做什麼?它期待什麼作爲參數? – Raphael