tutorial rails pagina español crear con ruby-on-rails ruby hyperlink anchor page-jump

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



crear pagina web con ruby on rails (6)

Intento crear anclas únicas 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 la página donde comienza su comentario. .

Tal vez estoy haciendo esto de la manera equivocada, pero lo he intentado, pero fue en vano.

Vista de comentarios - Fail 1 - cuando se pega en un navegador, este enlace no se desplaza hacia abajo hasta la posición deseada

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

Controlador de comentarios - Error 2: corrige la URL en el navegador pero no se desplaza, solo se mantiene 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 ayudar, estaría muy agradecido :)

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

# es decir, http://localhost:3000/posts/please-work


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)) %>



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

<a name="comment_1"></a>

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


Parece que quieres usar el código link_to que tienes en tu pregunta. Luego, en su lista de comentarios, debe asegurarse de tener una etiqueta de anclaje con el mismo nombre en el enlace.

Así que esto:

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

generará algo como esto

<a href="localhost:3000/posts/2#1comment_234">Your comment</a> /* html code */ <a name="comment_1234">This is a comment</a>

Tienes que pasar manualmente el #comment_ contrario, el método link_to piensa que el atributo: anchor que estás pasando es para esa etiqueta.


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)) %>