2010-09-28 4 views
0

Le travail a beaucoup de tâches, tâche a beaucoup de notesrails3 html5 jquery a ajouté dynamiquement des formes imbriquées, modèle de présentateur?

Comment une telle forme devrait ressembler? Avec les partiels, je peux entrer tout le travail depuis/jobs/new, et ajouter de nouvelles tâches depuis/jobs/2/tasks/new avec possibilité d'ajouter des notes, et bien sûr la possibilité d'ajouter de nouvelles notes depuis/jobs/2/tasks/5/notes/nouveau?

Est-ce un bon endroit pour utiliser le modèle de présentation? Quand oui, quelle bibliothèque dois-je utiliser? J'ai essayé la branche rails3 de active_presenter sur github mais j'ai eu quelques problèmes avec les partials de formulaire. Est-ce que quelqu'un est un bon exemple pour une telle tâche?

Il existe de nombreux didacticiels de présentation, des didacticiels de formulaires imbriqués et des didacticiels javascript discrets, mais pas seulement l'un d'entre eux.

Ce serait bien si quelqu'un a posté un tutoriel en utilisant des exemples de html5 et rails3

Répondre

0

modèle Présentateur est pas nécessairement la meilleure solution ici, en fait.

Vous aurez probablement futher en utilisant simplement accepts_nested_attributes_for:

# Models 
class Job < ActiveRecord::Base 
    has_many :tasks, :autosave => true 
    accepts_nested_attributes_for :tasks 
end 

class Task < ActiveRecord::Base 
    belongs_to :job 
    has_many :notes, :autosave => true 
    accepts_nested_attributes_for :notes 
end 

class Note < ActiveRecord::Base 
    belongs_to :task 
end 

Et puis dans votre forme faisant quelque chose comme (en HAML):

= form_for @job do |job| 
    = job.text_field :name # or whatever your Job attributes are 
    = job.fields_for :tasks do |task| 
    = task.text_field :name 
    = task.check_box_field :complete 
    = task.fields_for :notes do |note| 
     = note.text_field :body 
    = job.submit "Create Job" 

Vous pourriez avoir à initialiser certaines tâches réellement/notes pour les nouveaux travaux ou les formulaires d'enregistrement associés peuvent ne pas apparaître. Par exemple, faire quelque chose comme 3.times { @job.tasks.build } pour créer 3 tâches vides (et donc afficher le sous-formulaire de tâche 3 fois).

Questions connexes