Rails 3.2 Créer un modèle parent à partir de la vue d'enfant
-
30-10-2019 - |
Question
J'ai du mal à comprendre comment procéder. J'ai deux modèles, un projet et un cours.
#project.rb
belongs_to :course
attr_accessible :course_id, :course
accepts_nested_attributes_for :course, reject_if: lambda { |a| a[:course_id] == 0 }
#course.rb
has_many :projects
Sur le Projects#new
page (objet enfant), je veux taper le nom d'un nouveau course
et faites-le créer l'objet parent.
Voici ma tentative dans la vue, mais cela ne semble pas fonctionner correctement.
= form_for [@user, @project] do |f|
# Other fields
= fields_for :course do |builder|
= builder.label :name, 'Course Name'
= builder.text_field :name
= f.submit
J'utiliserai cet objet parent plus tard pour créer plus de projets, mais pour l'instant, supposons qu'il n'existe pas.
Mise à jour 1J'ai modifié mon champ pour être (selon la demande de Ryan):
= form_for [@user, @project] do |f|
# Other fields
= f.fields_for :course do |builder|
= builder.label :name, 'Course Name'
= builder.text_field :name
= f.submit
J'utilise haml, donc le =
devrait s'afficher, mais les champs ne s'affichent même pas sur la page ou dans le HTML généré. Un indice sur la raison pour laquelle c'est? (Le bouton Soumettre s'affiche)
MISE À JOUR 2J'ai trouvé une solution potentielle, mais je ne sais pas si c'est la bonne façon d'aborder cela. Dans le contrôleur, j'ai besoin de construire un cours pour les champs_for pour apparaître.
# ProjectsController
def new
@project = @user.projects.new
@project.build_course
end
# project.rb
attr_accessible :course_attributes
# So yes, I now see what you were talking about, regarding the course_attributes
Pas de solution correcte