Cómo crear un ancla y redirigir a este ancla específica en Ruby on Rails

Estoy tratando de crear anclajes únicos para cada comentario en mi blog para que una persona pueda tomar la url de un ancla y pegarla en su navegador, que cargará automáticamente la página y se desplazará hacia abajo hasta el punto en el que comienza su comentario. .

Tal vez estoy haciendo esto por el camino equivocado, pero he intentado esto que fue en vano.

Vista de comentarios – Error 1: cuando se pega en un navegador, este enlace no se desplaza hacia abajo a la posición deseada

 'posts', :action => 'show', :id => comment.post, :anchor => 'comment_' < 

Controlador de comentarios – Error 2 – Corregir la URL en el navegador, pero no se produce ningún desplazamiento, simplemente permanece en la parte superior de la página

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

Si alguien pudiera ayudarme estaría muy agradecido 🙂

ACTUALIZACIÓN: las siguientes soluciones casi funcionan, sin embargo, aparece la siguiente URL que no se está desplazando si hago clic en ella.

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

Parece que desea utilizar el código link_to que tiene en su pregunta. Luego, en su lista de comentarios, debe asegurarse de que tiene una etiqueta de anclaje llamada igual en el enlace.

Así que esto:

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

generará algo como esto

  Your comment /* html code */ This is a comment 

#comment_ manualmente el #comment_ contrario, el método link_to cree que el atributo: anchor que le está pasando es para esa etiqueta.

En realidad, el ancla es una opción para la ruta, no para el enlace a

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

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001565

 link_to "Comment wall", profile_path(@profile, :anchor => "wall") # => Comment wall 

Aquí hay una mejora en la respuesta de @ XGamerX.

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

O

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

Prueba esto:

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

esta es la mejor manera

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

Estos enlaces se desplazarán hacia abajo hasta la posición donde tiene un código como:

  

No sé si hay ayudantes que lo hagan por ti, pero es muy simple y puedes escribir el tuyo.

    Intereting Posts