2010-03-25 4 views

Répondre

2

En config/routes.rb, vous voulez traiter les messages et les commentaires des ressources:

map.resources :posts do |post| 
    post.resources :comments 
end 

Cela vous permet d'utiliser post_comments_path(@post), qui se transforme en /posts/28383/comments.

Ensuite, dans la vue qui répertorie les commentaires de la publication, ajoutez un attribut HTML id à chaque commentaire. Par exemple:

<div id="comment-<%= comment.id %>"> 
    <%= comment.body %> 
</div> 

Notez que l'attribut HTML id est préfixé avec comment- parce qu'il must begin with an alphabetic character.

Vous pouvez ensuite relier directement à un commentaire comme celui-ci:

<%= link_to 'Comment permalink', 
      post_comments_path(@post, :anchor => 'comment-' + @comment.id) %> 

Notez que l'ID de poste et l'ID de commentaire sont utilisés pour des choses distinctes: l'ID de poste est utilisé pour générer la base de l'URL, tandis que l'ID de commentaire est utilisé comme point d'ancrage pour sauter vers la partie droite de la page.

+0

Merci Ron, mais où dois-je dire que le commentaire_id n'est pas une clé unique? (sinon, j'aurais d'énormes commentaires) – Victor

+0

Oui, vous pouvez en effet. –

0

La solution de Ron DeVera est correcte. D'un autre côté, vous pouvez être intéressé à ne montrer qu'un seul commentaire.

Vous pouvez le faire à la main avec quelque chose comme ça dans le routes.rb

map.connect 'posts/:id#:comment_id', :controller=> 'comments', :action=>'show_comment' 

puis dans votre méthode de commande show_comment vous pouvez accéder au paramètre via params[:comment_id].

Le reste de cette solution irait de l'avant à la main comme ceci, y compris obtenir le commentaire de la poste post.comments[params[:comment_id]].

Questions connexes