2011-02-07 4 views
0

私はレコード管理アプリケーションの作業を開始しています。 システムでは、ユーザーはデータベースに格納されたレコードを管理できます。各レコードにはカテゴリと呼ばれる1つ以上のオブジェクトがあり、各カテゴリには利点と呼ばれる1つ以上のオブジェクトがあります。 私は3つのモデル:レコード(has_manyカテゴリ)、カテゴリ(タイトルフィールドとbelongs_toレコード、have_many利点を持っている)、優位性(タイトルと説明フィールドとbelongs_toカテゴリを持っている)です。RoR:複数のモデルを同じ形式で扱っていますか?

レコードを作成または更新した後、ワンクリックですべてのレコードを更新/保存する際に、ユーザーが新しいカテゴリや利点を追加できるようにするにはどうすればよいですか?カテゴリと利点が別のエンティティであることをユーザーが知らなくてもよいため、レコードの一部として参照する必要があります。ユーザは、レコードの作成/更新画面に任意の量のカテゴリおよび利点を追加することが許可されるべきである。

これらの2つの問題に関するヘルプは非常に高く評価されます。

答えて

3

簡単に、レコードはカテゴリと利点の両方でaccept_nested_attributes_を使用する必要があります。あなたはこのエピソード(それらのすべての3)、彼らはあなたが知る必要があるすべて含まれて見て、クライアント側のJavaScriptを使用して新しいオブジェクトを作成することができます:あなたが動作するようにそこにはJavaScriptを取得するカント場合 http://railscasts.com/episodes/196-nested-model-form-part-1

は、私にメールを送信し、私がしなければなりませんでしたそれを書き直しますが、アイデアは同じです。ここで

は、私が使用するJavaScriptです:


//This function adds the fields for the photo association 
function add_fields(id, association, content) { 
    var new_id = new Date().getTime(); 
    var regexp = new RegExp("new_" + association, "g"); 
    var regexp2 = new RegExp("new\\]\\[" + association, "g"); 
    content = content.replace(regexp, new_id); 
    content = content.replace(regexp2, new_id); 
    $(id).append(content); 
} 


def link_to_add_fields(name, id, f, association, partial) 
    new_object = f.object.class.reflect_on_association(association).klass.new 
    fields = f.fields_for(association, new_object, :child_index => "new") do |builder| 
    render(:partial => partial, :locals => {:form => builder}) 
    end 
    link_to_function(name, "add_fields(\"#{id}\", \"#{association}\", \"#{escape_javascript(fields)}\") ") 
    end 
+0

は、私は彼らに時計を与え、あなたに戻って取得します、ありがとうございます。 –

+0

ありがとうございます、私が探しているものです。 –

+0

問題なく、うれしいですが、本当にRyan Batesと素晴らしいスクリーンキャストです。 – daniel

関連する問題