私はこの質問を先に聞いたことがありますが、私はそれを言い換えるつもりです。ユーザーが多くのターゲットを作成できるワークシートがあり、各ターゲットには多くの属性があります(attribute_idを指定するものを選択します)。各ターゲットはjscriptによって追加されます。 ryan batesのマルチモデルのスクリーンキャストでは、複数の子供をその場で追加する方法について説明していますが、複数の親に掘り下げません。 コード複数の親と子を1つのフォームで作成、作成する
<% fields_for "target_attributes[]", Target.new do |target| -%>
<%= target.select("id",@classification_hash[classification_type.id].collect{|c| [c.name,c.id]}
は私のselect要素(のform_for:ワークシート)与える
<select id="worksheet__target_id" class="selectbox" name="worksheet[target_attributes][][attribute_id]">
をし、すべての私の目標は、配列に属性を置きますのハッシュのパラムスを通過し、それは問題ありません。だから、私はこのロジックを取り、ネストされたfields_forを持って、そして自分自身の配列
<% fields_for "worksheet[]",Worksheet.new do |worksheet| -%>
<% worksheet.fields_for "target_attributes[]", Target.new do |target| -%>
<%= target.select("id",@classification_hash[classification_type.id].collect{|c| [c.name,c.id]}
に私の目標&その属性のすべてを置くことを考えていた私に、フォーム
を与えます
<select id="worksheet__target_id" class="selectbox" name="worksheet[][target_attributes][][attribute_id]">
だから、私は自分の配列になり、その後の私の目標のすべてを考え出しし、すべての肉汁だろうが、私は私のparamsでこれを取得する:
worksheet"=> [{"target_attributes"=>[{"id"=>"12"}]}, {"target_attributes"=>[{"id"=>"15"}]}, {"target_attributes"=>[{"id"=>"17"}]}, {"target_attributes"=>[{"id"=>"14"}]}, {"target_attributes"=>[{"id"=>"16"}]}, {"target_attributes"=>[{"id"=>"17"}]}]
(注、3 target_attributeは、ターゲットごとに選択がありますそのため、3つの属性を持つ2つのターゲットがリストされています) コントローラでは、このように各ターゲットを分離して新しいターゲットオブジェクトを作成することはできません。誰か助けてくれますか?などなど、各ターゲットについては
は、その後、私は基本的にのための新たな「行」を持っている追加
<select id="worksheet__target_id" class="selectbox" name="worksheet[target_attributes][1][][attribute_id]">
(各ターゲット属性のために、3回)
<select id="worksheet__target_id" class="selectbox" name="worksheet[target_attributes][0][][attribute_id]">
:私はこのようになりますフォームをみたいですそれぞれ新しいタスク。しかし、私は選択名を評価し、いくつかのJavascriptイテレータ変数に基づいてそれを修正するいくつかの乱雑なJavascriptなしでこれを行う方法はありません。どんな考えも大変ありがとうございます