2012-02-12 8 views
7

Estoy usando una etiqueta link_to en mis publicaciones/vista de índice y quiero vincularla a mis publicaciones/show/id view con un anclaje que hace que se desplace hasta el formulario de comentarios. Por alguna razón, no puedo hacer que el anclaje funcione. Aquí está mi código:Rails 3.1.3 utilizando el atributo de anclaje con la etiqueta link_to de posts/index a posts/show/id no funciona

En entradas/index

<%= link_to 'Add a Comment', post, :anchor => 'comment_form' %> 

Esta falla para anexar el signo # al final del enlace, por lo que es sólo localhost: 3000/mensajes/Identificación. También he intentado muchas variaciones de link_to, incluyendo:

<%= link_to 'Add a Comment', post(:anchor => 'comment_form' %> 

y

<%= link_to 'Add a Comment', :controller => 'posts', :action => 'show', :id => @post, :anchor => 'comment_form' %> 

pero no he tenido suerte.

Aquí es mi mensajes # show acción:

def show 
    @post = Post.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.json { render json: @post } 
    end 
    end 

y aquí es la vista Mensajes/espectáculo en el que quiero que el ancla para desplazarse a:

<h2><a name="comment_form" id="comment_form">Add a comment:</a></h2> 

Por otra parte, ninguna de las arriba funciona si estoy vinculando a algo en la página de índice, ya que puedo ver que hash # ha sido anexado a la url de salida. Por alguna razón, no funciona cuando intentas vincular a la página de la demostración. ¿Alguna ayuda con esto?

Respuesta

14

Prueba esto:

link_to('Add a comment', post_path(post, :anchor => 'comment_form')) 

El segundo argumento de link_to que suele ser transmitido tal cual a url_for, y se usa el tercer argumento como un hash de atributos para el elemento <a> que en última instancia se genera.

Por lo tanto, en su primer ejemplo, está pasando un objeto Post como segundo argumento y un hash como tercer argumento. Solo el Post pasará a url_for. Nunca ve el hash que contiene la opción :anchor, por lo que no verá el delimitador al final de la URL generada. (Pero es probable que vea un atributo anchor="comment_form" en el elemento generado <a>).

Su segundo ejemplo es sintácticamente incorrecto. Me imagino que resultó en un error.

Su tercer ejemplo ... debería haber funcionado. No estoy seguro de por qué no :-)

Cuestiones relacionadas