2009-03-05 1 views
2

属性。私はライアンベイツと周りの複雑なフォームを果たしたが、私は非常に私の問題を把握することはできません。Railsの動的マルチモデルフォームは、この問題は、私を殺してきた


Location has_many :targets 
Target has_many :target_classifications

すべての場所がページに表示されます: 私はこのスキーマを持っています。次いで、ユーザは、(ターゲットに利用可能な分類を含む)位置3選択下でテーブルの行を追加し、動的のJScriptを介して任意の位置、および目標値の目標を作成することができます。保存をクリックする前に任意の場所に任意の数のターゲットを作成できます。 私はこのようにfields_for使用しています:それぞれが選択するための




私はこのコードを持っているtarget_partialを、レンダリングするためにRJSを使用しています。 sumbmitted場合、私は、このハッシュを取得:

"new_targets"=> 
    {"7"=>[{"id"=>"13"}, {"id"=>"15"}, {"value"=>"67", "id"=>""}], 
    "4"=> 
    [{"id"=>"12"}, 
    {"id"=>"15"}, 
    {"value"=>"23", "id"=>""}, 
    {"id"=>"11"}, 
    {"id"=>"16"}, 
    {"value"=>"67", "id"=>""}]}, 

だから、場所(この場合は「7」と「4」)によって各ターゲットを分離するが、各ターゲットを分離しません。私が欲しいのはこれです:

 
"new_targets"=> 
    {"7"=>[ 
      {"target"=>[{"id"=>"13"}, {"id"=>"15"}, {"tonnes"=>"67"}]} 
     ], 
    "4"=>[ 
      {"target"=>[{"id"=>"12"},{"id"=>"15"},{"tonnes"=>"23"]}, 
      {"target"=>[{"id"=>"11"},{"id"=>"16"},{"tonnes"=>"67"]} 
     ] 
    } 

私はそれぞれの場所ごとに各ターゲットを反復することができます。私は(それが吹くまで)新しい[対象]で私のfield_for方法でブレースを追加するように見えることはできませんが、それは私が何をしたいのようなものです。何かご意見は?

答えて

0

問題のこの種のは、ここで議論されています

http://wonderfullyflawed.com/2009/02/17/rails-forms-microformat/

しかし、レール2.3ソリューション(ない私のためのオプション)のようです。私は追加したい

<input name="creator[widget_attributes][0][id]" /> 
<input name="creator[widget_attributes][0][name]" /> 
<input name="creator[widget_attributes][0][price]" /> 

<input name="creator[widget_attributes][1][id]" /> 
<input name="creator[widget_attributes][1][name]" /> 
<input name="creator[widget_attributes][1][price]" /> 

ただ、いくつかのターゲットごとに一意の識別子を作成する方法(または、この場合には、ウィジェット属性):彼らは、サイトに掲載されているよう基本的に、私は形をしたいです。 jscriptで新しいターゲットが追加されたことを考えると、厳しい状況になります。レールは自動的に私にあなたがこれをやっている場合、私は知らない

1

のためにこれを行うためのいくつかの方法があるべきような気がしますが、fields_for使用するときは、オブジェクトの代わりに文字列を指定する必要があります。私は部分的にあなたが持っているコードを見ることができないので、私は離れているかもしれません。とにかく、私のやり方はヘルパーです:

def fields_for_target(target, &block) 
    prefix = target.new_record? ? 'new' : 'existing' 
    fields_for("location[#{prefix}_target_attributes][]", target, &block) 
end 
+0

@brad:私はわからないんだけど、私は私が2.3は、現時点では私のためのオプションではありませんレールを述べたように、これらは、「[]」fields_forにあなたが – klew

-1

簡単です。ルックアップaccepts_nested_attributes_for。 :)

+0

やりたいと思います。だからそれは動作しません – brad

関連する問題