J'ai un modèle d'album qui a une association "has_many: trough" nommée Track. Fondamentalement, un album peut avoir un certain nombre de pistes, mais une piste peut appartenir à plus d'un album en même temps (d'où l'association "Tracklist").Rails 3 accepte_nested_attributes_for formulaire pour le nouveau modèle (au lieu de la collection complète)
J'ai une application RESTful avec une forme (avec l'aide de formtastic) qui met tous les attributs de pistes comme si
form.semantic_fields_for :tracks do | builder |
builder.fields
end
Le formulaire met tous les champs de pistes associées et je peux les mettre à jour bien, tout fonctionne. Maintenant, ce que je veux faire est d'avoir une autre vue pour ajouter une nouvelle piste à un album existant. Dans cette vue, je ne veux pas rendre tous les champs d'entrée pour les pistes existantes, mais seulement les champs pour la nouvelle association que j'essaie de créer.
J'ai essayé de trouver des informations sur la façon de faire, et le meilleur que je suis venu avec est:
form.semantic_fields_for :tracks, Track.new do | builder |
builder.fields
end
Ceci produit un ensemble d'entrées piste, comme nécessaire, et je peux soumettre le formulaire et la piste sont créés et associés au produit - mais seulement s'il n'y a pas d'erreurs de validation.
Le problème vient avec les validations. Si on échoue, l'application rend le même point de vue nouveau, mais toutes les entrées sont vides à nouveau (toutes les données, valides ou non, est perdu, et les messages d'erreur en ligne pour Formtastic ont également disparu):
form.semantic_fields_for :tracks, Track.new do | builder |
builder.fields
end
I reckon c'est parce que je fais un Track.new même s'il y a déjà un objet dans les paramètres de requête qui a les messages de données et d'erreur. Ce n'est pas bon, bien sûr. Ce que je veux avoir, c'est le formulaire pour la seule piste affichée avec les données déjà entrées, ainsi que les messages d'erreur Formtastic.
Qu'est-ce que je fais mal?