2011-04-19 3 views
0

J'ai un profil, et ce profil a de nombreux curso s (cours). Je montre tous les cours qu'un profil a sur show.html.erb de ce profil.Supprimer des objets imbriqués

<% for curso in @profile.cursos %> 
<li><%=h curso.nome %> - <%=h curso.universidade %><br> 
Ingresso em: <%=h curso.ano_ingresso %> - Encerra em: <%=h curso.ano_termino %> 
<li> 
<%= button_to 'Delete', { :action => "destroy", :id => curso.id },:confirm => "Are you sure?", :method => :delete %> 

De cette façon, je suis en mesure de montrer tous les cours d'un profil a sur son page, mais le button_to delete ne fonctionne tout simplement pas. J'ai déjà essayé beaucoup de choses, mais je pense que je suis perdu. Toute idée sur la façon dont je peux créer un lien ou un bouton ou quoi que ce soit pour supprimer les cours?

Répondre

4

Dans vos itinéraires fichier

resources :profiles do 
    resources :courses 
end 

Ensuite, vous pouvez simplement utiliser la méthode link_to

<%= link_to "Delete", profile_course_path(profile, course), :method => :delete %> 

Assurez-vous que vous fournissez les variables correctes profile et course

Ensuite, dans votre courses_controller.rb vous devez obtenir le profil.

before_filter :get_profile 

def get_profile 
    @profile = Profile.find(params[:profile_id]) if params[:profile_id] 
end 

def destroy 
    @course = Corse.find(params[:id]) 
    @course.destroy 
    redirect_to profile_courses_path(@profile) 
end 

Cela vous ramènera à l'URL de profil correcte avec ses cours imbriqués.

mise à jour

Pour les nouveaux cours, vous pouvez utiliser le lien suivant:

<%= link_to "New Course", new_profile_course_path(profile) %> 

qui vous mènera à l'action new dans le contrôleur de cours.

Vous devez lire les formulaires imbriqués here.

+0

Merci pour la réponse! Je suppose que cela va fonctionner, mais quand je clique sur le lien de suppression maintenant il me dirige vers le formulaire pour créer un nouveau cours. Je ne sais pas si c'est parce que j'ai sur mes routes 'match '/ profiles /: id_profile/cursos',: to => 'cursos # new'', mais sans ce match je ne peux pas créer de nouveau cours. Une idée? – Luk

+0

utilisez simplement les routes que j'ai définies. Supprimez cette route et vérifiez le code pour les mises à jour avec un nouveau parcours. Vous voulez utiliser des liens imbriqués. – s84

+0

Merci, maintenant je peux créer le cours et je vais mieux l'idée. Fait quelques changements au lien '<% = link_to" Supprimer ", profile_curso_path (@profile, curso),: méthode =>: delete%>' il me dirige maintenant au lien avec cursos /: curso_id, mais dit il n'y a pas de route. J'ai ajouté mannually une route pour le détruire avec le match et cela fonctionne, mais après ce que vous avez dit, c'est "faux". Toute ideia comment je peux résoudre? – Luk

Questions connexes