2011-02-09 9 views
10

Estoy tratando de entender cómo permitir que un usuario cree formularios personalizados con todos los tipos de campo. Si hay una gema que sería genial, pero parece que no puedo encontrar ninguna.Rails 3: ¿Formularios personalizados creados por el usuario?

Así que tienen una configuración de base de datos como ésta, que:

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 

Y esto es más o menos donde estoy. No puedo pensar en cómo iterar a través del field_type y devolver los valores, así como también asociarlos con los formularios que se están llenando.

Gracias

+0

¿Alguna vez se ha encontrado una buena solución para esto? tratando de hacer lo mismo –

+0

@noel_g Consulte la respuesta a continuación – kkampen

Respuesta

12

que se supone que tiene algún tipo de Form modelo, y luego una especie de Field modelo, y una Form has_many :fields. ¿Correcto?

Crear el formulario es bastante sencillo: recuperar el formulario, recorrer todos los campos y, según el tipo, representar el código correcto. Si usa algo como formtastic o simple_form, el código es bastante sencillo.

Pero para que funcione, dentro de su controlador tendrá que crear un objeto ficticio, que tenga un getter y setter para todos los campos. Puede usar un hash simple para esto u OpenStruct (mejor). Mientras itera sobre los campos, configure el hash con valores vacíos o predeterminados.

Creo que también desea guardar los resultados de un formulario? Creo que la forma más fácil es usar un modelo como este

t.form_id :integer 
t.fields_data :text 

y almacenar los datos introducidos en el campo de texto de ejemplo json o algo. También podría hacer algo como

class FormData 
    belongs_to :form 
end 

class FormDataField 
    belongs_to :form_data 
    belongs_to :form_field 
end 

si bien este es el más limpio (se puede consultar en los valores de lleno en los campos de cierta forma), es tal vez demasiado de una sobrecarga.

+0

Entiendo lo que dice, y está cada vez más claro. ¿Tendría una MVC de muestra o esto? En form_data, ¿cómo lo asociaría con cada form_field? Si conoces alguna gema o tutorial, te lo agradecería mucho. Gracias. – kkampen

+0

kkampen, parece que no hay nada por ahí. 20 minutos de Google y este es el mejor recurso para crear formularios personalizados. Quería encontrar una solución de código abierto, pero no parece que haya una por ahí. –

Cuestiones relacionadas