etiquetas - title html attribute
¿Cuál es la forma correcta de definir una etiqueta de anclaje en los rieles? (3)
Es obvio en la documentation (y en Google) cómo generar un enlace con un segmento, por ejemplo, podcast/5#comments
. Simplemente pasa un valor para :anchor
to link_to
.
Mi preocupación es sobre la tarea mucho más sencilla de generar la <a name="comments">Comments</a>
es decir, el destino del primer enlace.
He intentado lo siguiente, y aunque parecían funcionar, el marcado no era lo que esperaba:
link_to "Comments", :name => "comments"
link_to "Comments", :anchor => "comments"
Creo que me falta algo obvio. Gracias.
Se está confundiendo con el azúcar sintáctico de Ruby (que Rails usa profusamente). Déjame explicarte esto brevemente antes de responder a tu pregunta.
Cuando una función ruby toma un único parámetro que es un hash:
def foo(options)
#options is a hash with parameters inside
end
Puedes ''olvidar'' para poner los paréntesis / paréntesis, y llamarlo así:
foo :param => value, :param2 => value
Ruby llenará los espacios en blanco y entenderá que lo que estás tratando de lograr es esto:
foo({:param => value, :param2 => value})
Ahora, a su pregunta: link_to
toma dos hashes opcionales: uno se llama options
y el otro html_options
. Puedes imaginarlo definido así (esto es una aproximación, es mucho más complejo)
def link_to(name, options, html_options)
...
end
Ahora, si lo invocas de esta manera:
link_to ''Comments'', :name => ''Comments''
Ruby se confundirá un poco. Intentará "completar los espacios en blanco" por usted, pero incorrectamente:
link_to(''Comments'', {:name => ''Comments''}, {}) # incorrect
html_options
que la parte name => ''Comments''
pertenece a opciones, no a html_options
!
Tienes que ayudar al rubí rellenando los espacios en blanco tú mismo. Coloque todos los paréntesis en su lugar y se comportará como se espera:
link_to(''Comments'', {}, {:name => ''Comments''}) # correct
Puedes eliminar el último conjunto de corchetes si quieres:
link_to("Comments", {}, :name => "comments") # also correct
Sin embargo, para usar html_options, debes dejar el primer conjunto de paréntesis. Por ejemplo, tendrá que hacer esto para un enlace con un mensaje de confirmación y nombre:
link_to("Comments", {:confirm => ''Sure?''}, :name => "comments")
Otros ayudantes de rieles tienen una construcción similar (es decir, form_for
, collection_select
), por lo que debe aprender esta técnica. En caso de duda, basta con añadir todos los paréntesis.
Si quieres pasar por los rieles, te sugiero content_tag
( docs ).
Ejemplo:
content_tag(:a, ''Comments'', :name => ''comments'')
<%= link_to(''new button'', action: ''login'' , class: "text-center") %>
creó una etiqueta de anclaje para login.html ig
<a href="login.html" class = "text-center"> new button </a>
y para
<a href="admin/login.html" class = "text-center"> new button </a>
utilizar
<%= link_to(''new button'', controller: ''admin'',
action: ''login'' , class: "text-center") %>