Je suis bloqué. J'ai les modèles suivants: profil, utilisateur, travail.Rails fields_pour ne pas apparaître
L'utilisateur a un profil, le profil a de nombreux emplois.
class Profile < ActiveRecord::Base
belongs_to :user
has_many :jobs
attr_accessible :user_id, :first_name, :last_name, :headline,:jobs_attributes
accepts_nested_attributes_for :jobs, allow_destroy: true
end
class User < ActiveRecord::Base
has_one :profile
attr_accessible :username,:email, :password,:profile_attributes
accepts_nested_attributes_for :profile, allow_destroy: true
end
class Job < ActiveRecord::Base
belongs_to :profile
belongs_to :country
attr_accessible :company, :country_id, :end_date, :job_title, :profile_id, :start_date
end
Maintenant, je veux que l'utilisateur puisse modifier son profil et ajouter un travail à son profil. Pour ce faire, je l'ai utilisé ce code:
<%= f.fields_for :jobs do |j| %>
<%= j.label :job_title, "Job Title" %>
<%= j.text_field :job_title %>
<%= j.label :company, "Company" %>
<%= j.text_field :company %>
............................
<% end %>
Mais la chose est, cela ne me montre les champs si l'utilisateur a déjà un emploi à son profil, et je suis en mesure de mettre à jour cela. Mais dans ce cas, le tableau est vide et il n'y aura pas d'itération. Que puis-je utiliser au lieu de cela, pour être sûr que les formulaires apparaissent même si l'utilisateur n'a pas de travail?
J'ai essayé d'ajouter un "begin-end while" mais cela n'a pas fonctionné. Ni vérifier si le tableau: jobs est vide et créer un nouvel objet Job ne fonctionne pas ... ou au moins mes essais.
Avez-vous des idées?
Merci!
La nouvelle méthode dans le contrôleur.
def new
resource = build_resource({})
profile = resource.build_profile
profile.jobs += [profile.jobs.build]
respond_with resource
end`
J'ai modifié le message en ajoutant la nouvelle méthode dans le contrôleur. Ne fonctionne toujours pas. – user1894933