current_page Comment créer une ancre et la rediriger vers cette ancre spécifique dans Ruby on Rails




link_to class (5)

J'essaie de créer des ancres uniques pour chaque commentaire sur mon blog afin qu'une personne puisse prendre l'URL d'une ancre et la coller dans son navigateur, qui chargera automatiquement la page et fera défiler l'écran jusqu'au point où commence le commentaire. .

Peut-être que je m'y prends mal, mais j'ai déjà essayé cela sans succès.

Affichage des commentaires - Echec 1 - lorsqu'il est collé dans un navigateur, ce lien ne fait pas défiler l'écran jusqu'à la position souhaitée.

<%= link_to '#', :controller => 'posts', :action => 'show', :id => comment.post, :anchor => 'comment_' << comment.id.to_s %>

Contrôleur de commentaires - Echec 2 - Corrigez l'URL dans le navigateur mais aucun défilement ne se produit, il reste en haut de la page.

redirect_to :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_' + @comment.id.to_s

Si quelqu'un pouvait m'aider, je vous en serais très reconnaissant :)

MISE À JOUR: Les solutions ci-dessous fonctionnent presque, mais je viens avec l'URL suivante sur laquelle on ne fait pas défiler l'écran si je clique dessus.

# ie http://localhost:3000/posts/please-work


Answer #1

Essaye ça:

<%= link_to '#', post_path(comment.post), :anchor => "comment_#{comment.id}" %>

Answer #2

Voici une amélioration par rapport à la réponse de @ XGamerX.

<%= link_to '#', [comment.post, { anchor: dom_id(comment) }] %>

Ou

<%= link_to '#', post_path(comment.post, anchor: dom_id(comment)) %>

Answer #3

c'est la meilleure façon:

<%= link_to '#', post_path(comment.post, anchor: dom_id(comment.id)) %>


Answer #5

Il semble que vous souhaitiez utiliser le code link_to que vous avez dans votre question. Ensuite, dans votre liste de commentaires, vous devez vous assurer que vous avez une balise d'ancrage portant le même nom dans le lien.

Donc ça:

 <%= link_to 'Your comment', post_path(@comment.post) + "#comment_#{@comment.id.to_s}" %>

va générer quelque chose comme ça

 <a href="localhost:3000/posts/2#1comment_234">Your comment</a>

 /* html code */     

 <a name="comment_1234">This is a comment</a>

Vous devez manuellement coller sur #comment_ sinon la méthode link_to pense que l'attribut: anchor que vous passez est pour cette balise.





page-jump