¿Cuál es la mejor manera de devolver varias etiquetas desde Rails Helper?
-
02-07-2019 - |
Pregunta
Quiero crear un campo oculto y crear un enlace en un asistente y luego enviar ambos a mi erb.
<%= my_cool_helper "something", form %>
Debería superar los resultados de
link_to "something", a_path
form.hidden_field "something".tableize, :value => "something"
¿Cómo sería la definición de ayudante?Los detalles de qué link_to y form.hidden_field realmente no importan.Lo que importa es cómo devuelvo el resultado de dos llamadas diferentes.
Solución
Hay varias formas de hacer esto.
Recuerde que a los ayudantes de rieles existentes les gusta link_to
, etc, solo genera cadenas.Puedes concatenar las cadenas y devolverlas (que es lo que hago la mayor parte del tiempo, si las cosas son simples).
P.EJ:
link_to( "something", something_path ) + #NOTE THE PLUS FOR STRING CONCAT
form.hidden_field('something'.tableize, :value=>'something')
Si está haciendo cosas que son más complicadas, puede simplemente poner ese código en una parte y pedirle a su ayudante que llame render :partial
.
Si estás haciendo cosas más complicadas que eso, entonces quizás quieras mirar el blog de errtheblog. bloque_a_partial ayudante, lo cual es genial
Otros consejos
Hasta ahora lo mejor que se me ha ocurrido es:
def my_cool_helper(name, form)
out = capture { link_to name, a_path }
out << capture { form.hidden_field name.tableize, value => 'something' }
end
¿Existe una mejor manera?
Si desea almacenar en búfer otra salida aparte de la cadena, puede usar concat
en lugar de +
.mira esto - http://thepugautomatic.com/2013/06/helpers/