2011-02-07 50 views
0

我正在開始創建一個記錄管理應用程序。系統將允許用戶管理存儲在數據庫中的記錄,每個記錄可以有一個或多個稱爲類別的對象,每個類別可以有一個或多個稱爲優點的對象。 我想這樣做的方式是我有3個模型:記錄(has_many類別),類別(具有標題字段和belongs_to記錄,has_many優勢),Advantage(具有標題和描述字段以及belongs_to類別)。RoR:以相同形式處理多個模型?

我如何讓用戶在創建或更新記錄時添加新的類別和優點,然後使用一鍵功能將所有這些更新/保存在一起?因爲用戶不知道類別和優勢是不同的實體,他必須將它們視爲記錄的一部分?應允許用戶在記錄的創建/更新屏幕中添加任意數量的類別和優點。

任何與這兩個問題的幫助將不勝感激!

回答

3

簡單,記錄應accept_nested_attributes_for類別和優勢。您可以使用客戶端的JavaScript創建新的對象,看這部劇集(其中所有3)它們包含了所有你需要知道: http://railscasts.com/episodes/196-nested-model-form-part-1

給我發電子郵件,如果你不能得到的JavaScript那裏工作,我不得不重寫它,但這個想法是一樣的。

這裏是我使用的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

謝謝你,我會給他們一個手錶送還給你。 – 2011-02-07 02:46:55