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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top