2011-02-09 62 views
10

我想圍繞如何讓用戶創建所有字段類型的自定義窗體。如果有一顆寶石會很棒,但我似乎無法在任何地方找到。Rails 3:用戶創建自定義表單?

所以我有一個DB設置這樣其中:

t.integer :form_id 
    t.string :name 
    t.string :hint 
    t.integer :position 
    t.string :field_type 
    t.boolean :required 
    t.integer :size 
    t.boolean :multiple 
    t.text :values 
    t.timestamps 

而這幾乎是我在哪裏。我不能想到如何遍歷field_type並返回值,並將它們與實際填寫的表單關聯起來。

感謝

+0

有沒有想出一個很好的解決方案呢?試圖做同樣的事情。 –

+0

@noel_g看到下面的答案 – kkampen

回答

12

我假設你有某種Form模型,然後某種Field模型和Form has_many :fields。正確?

構建表單不是很簡單:檢索表單,遍歷所有字段,並根據類型呈現正確的代碼。如果您使用類似formtasticsimple_form的代碼,則代碼非常簡單。

但是爲了使它工作,在你的控制器裏面,你必須創建一個虛擬對象,它有一個getter和setter用於所有的字段。你可以使用一個簡單的散列,或OpenStruct(更好)。在遍歷字段的同時將空值或缺省值設置爲散列值。

我想你還想保存表單的結果?我認爲,最簡單的方法是在例如文本字段中使用的模型是這樣

t.form_id :integer 
t.fields_data :text 

並存儲輸入的數據JSON什麼的。 你也可以做類似

class FormData 
    belongs_to :form 
end 

class FormDataField 
    belongs_to :form_data 
    belongs_to :form_field 
end 

,而這是最乾淨的(你可以填充在一定表單字段值查詢),這也許是太多的開銷。

+0

我明白你的意思,而且它越來越清晰。你會碰巧有一個樣本MVC或這?在form_data中,我如何將它與每個form_field相關聯?如果你知道任何寶石或教程,我會非常感激。謝謝。 – kkampen

+0

kkampen,看起來沒有什麼東西。 20分鐘的Google搜索,這是創建自定義表單的最佳資源。我想找到一個開源解決方案,但看起來並不像那裏。 –