2011-02-12 10 views

Respuesta

57

Simplemente podría utilizar

redirect_to post_path(comment.post, :anchor => "comment-#{comment.id}") 

para construir manualmente la dirección URL con el ancla. De esta manera, aún puede tener la URL absoluta a sus comentarios como posts/:post_id/comments/:comment_id en sus rutas. También puedes crear un método de ayuda en, por ejemplo, application_controller.rb

class ApplicationController 
    helper :comment_link 

    def comment_link(comment) 
    post_path(comment.post, :anchor => "comment-#{comment.id}") 
    end 
end 
+0

¿Cuál sería el beneficio de que mi URL absoluta siga siendo posts /: post_id/comments /: comment_id? – ClosureCowboy

+0

@ClosureCowboy: aún podría definir correctamente los comentarios como recursos, por ejemplo, eliminar o editarlos. Depende de sus requisitos reales si tiene sentido o no tenerlos. –

+0

¿El controlador es realmente el mejor lugar para poner este tipo de ayuda? Estoy reflexionando sobre este tema y realmente no sé dónde poner todos mis "ayudantes de enlace de anclaje" –

-1

puede anular el método to_param en el comentario para hacer eso.

por ejemplo

def to_param 
    comment.post_id.to_s + '#' + id.to_s 
end 

Y tendrá que ajustar routes.rb. Compruebe esto blog para más información.

0

Prefiere mantener su generador de anclajes en un solo lugar.

class Comment 
    ... 
    def anchor 
    "comment-#{id}#{created_at.to_i}" 
    end 
end 

continuación

post_path(comment.post, :anchor => comment.anchor) 

Adición de la created_at.to_i oscurece sus datos un poco más y no daña nada.

Cuestiones relacionadas