2011-02-09 2 views
10

私は、ユーザーがすべてのフィールドタイプのカスタムフォームを作成できるようにする方法を頭に入れています。偉大な宝石があれば、どこでも見つけられないようです。Rails 3:User custom formsを作成しましたか?

だから私はこのような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を持っていると仮定します。正しい?

フォームの構築は、フォームを取得し、すべてのフィールドを反復処理し、タイプに応じて正しいコードをレンダリングします。 formtasticまたはsimple_formのようなコードを使用すると、コードはかなり簡単です。

しかし、それを動作させるには、ダミーオブジェクトを作成する必要があります。ダミーオブジェクトは、すべてのフィールドにゲッターとセッターがあります。これには単純なハッシュを使うか、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分のグーグルで、これはカスタムフォームを作成するのに最適なリソースです。私はオープンソースのソリューションを見つけたいと思っていますが、そこに1つのソリューションがあるようには見えません。 –

関連する問題