J'espère que quelqu'un pourra m'aider. Travaille actuellement sur un projet RoR qui nécessite un type de fonctionnalité étrange.Rails, permettant aux utilisateurs de créer un formulaire qui sera utilisé par d'autres utilisateurs
Fondamentalement, j'ai deux types d'utilisateurs nommés utilisateur et chercheur. Les utilisateurs peuvent créer des formulaires et ces formulaires sont stockés dans la base de données et remplis par les chercheurs.
Je possède ce schéma de base
create_table "form_fields", :force => true do |t|
t.string "name"
t.string "form_field_type"
t.integer "form_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "forms", :force => true do |t|
t.integer "visit_id"
t.string "name"
t.integer "form_category_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "researchers", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "reset_password_token"
t.string "remember_token"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "researchers", ["email"], :name => "index_researchers_on_email", :unique => true
add_index "researchers", ["reset_password_token"], :name => "index_researchers_on_reset_password_token", :unique => true
create_table "results", :force => true do |t|
t.integer "form_id"
t.integer "subject_id"
t.string "form_field_name"
t.string "form_field_value"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "reset_password_token"
t.string "remember_token"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
create_table "visits", :force => true do |t|
t.string "name"
t.integer "visit_order"
t.integer "study_id"
t.datetime "created_at"
t.datetime "updated_at"
end
Ainsi, un utilisateur crée les formes et form_fields et un chercheur se connecte ensuite et est fourni avec ce formulaire
<% form_for [:researcher, @study, @subject, @visit, @form, Result.new] do |f| %>
<% @form.form_fields.each do |form_field| %>
<%= f.label form_field.name, :index => form_field.id %>
<%= f.hidden_field :form_field_name, :value=>form_field.name, :index => form_field.id %>
<%= f.text_field :form_field_value, :index => form_field.id %><br/>
<%= f.hidden_field :form_id, :value=>@form.id, :index => form_field.id %>
<%= f.hidden_field :subject_id, :value=>@subject.id, :index => form_field.id %>
<% end %>
<%= f.submit %>
<% end %>
Ainsi, le résultat est stocké dans la table des résultats et c'est tout.
Je peux me voir avoir des problèmes en essayant de permettre aux utilisateurs de définir des validations sur chaque champ_formulaire.
Quelqu'un at-il de l'expérience avec ce problème?
Je veux construire quelque chose comme ça, qu'avez-vous trouvé était la meilleure méthode? – JoeChin