Alors disons que j'ai des messages et des commentaires et l'URL pour le spectacle est /posts/1/comments/1
. Je veux créer un lien pour supprimer ce commentaire dans la méthode de destruction des commentaires. Comment je fais ça?Comment créer un lien de suppression pour un objet associé dans Ruby on Rails?
42
A
Répondre
98
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: {:confirm => 'Are you sure?'}, :method => :delete %>
dans le contrôleur de commentaires:
def destroy
@post = Post.find(params[:post_id])
@comment = Comment.find(params[:id])
@comment.destroy
respond_to do |format|
format.html { redirect_to post_comments_path(@post) }
format.xml { head :ok }
end
end
9
Depuis il y a quelque temps, l'option confirm
doit être inclus dans un hachage data
, sinon il sera ignoré silencieusement:
<%= link_to 'Destroy', post_comment_path(@post, comment),
data: { confirm: 'Are you sure?' }, method: :delete %>
0
Parfois lorsque vous avez <span>
, <i>
ou des éléments imbriqués à l'intérieur d'un tag <a>
de cette façon, link_to use est diffi culte. Vous pouvez utiliser inseted HTML brut qui est facile à manipuler, comme ceci:
<a class="btn btn-sm" href="/blogs/<%[email protected]%>" data-method="delete">
<i class="pg-trash"></i><span class="bold">Delete</span>
</a>
+0
Vous pouvez toujours utiliser ** link_to ** dans ces cas en passant un bloc pour définir le nom du lien: <% = link_to @blog, méthode:: delete, classe: "btn btn-sm" do%> < i class = "pg-trash"> Supprimer <% end %> –
Vous devez également être sûr que vous avez <% = javascript_include_tag: tous%> ou une étiquette similaire dans votre tête. Sinon le lien sera là mais ne respectera pas: method =>: delete. Juste ajouter ce commentaire parce que ça me bousculait tout à l'heure ... – lacker
Note rapide: 'javascript_include_tag: all' est déprimé dans Rails> 3.1, la mise en page de l'application par défaut' 'javascript_include_tag" application "' qui accomplira la même chose – tehfoo
J'ai rencontré un problème où mes liens AJAX déconnectaient les utilisateurs. J'ai fini par devoir inclure les tags CSRF dans la mise en page. Plus d'infos ici: http://stackoverflow.com/questions/6434283/rails-3-ajax-delete-links-log-out-current-user#comment7719982_6507424 Ce n'est pas entièrement lié à cette question, mais certaines personnes peuvent rencontrer ceci de façon inattendue. – Nick