2008-09-21 11 views
26

Quiero crear un campo oculto y crear un enlace en un helper y luego enviar ambos a mi erb.¿Cuál es la mejor forma de devolver varias etiquetas desde un Rails Helper?

<%= my_cool_helper "something", form %> 

En caso de poner fuera de los resultados de

link_to "something", a_path 
form.hidden_field "something".tableize, :value => "something" 

¿Cuál sería la definición del ayudante parece? Los detalles de lo que link_to y form.hidden_field realmente no importan. Lo que importa es cómo devolver la salida de dos llamadas diferentes.

+1

recuerde que [desde Rails 3] (http://railscasts.com/episodes/204-xss-protection-in-rails-3?view=asciicast) necesita marcar cadenas como 'html_safe 'para evitar los ataques XSS. – asymmetric

Respuesta

23

Existen varias formas de hacerlo.

Recuerde que los ayudantes de rieles existentes como link_to, etc., solo producen cadenas de salida. Puede concatenar las cadenas y devolverlas (que es lo que hago la mayoría de las veces, si las cosas son simples).

Ejem:

link_to("something", something_path) + #NOTE THE PLUS FOR STRING CONCAT 
form.hidden_field('something'.tableize, :value=>'something') 

Si estás haciendo las cosas que son más complicados, que podría sólo hay que poner ese código en un parcial, y tienen su llamada ayudante render :partial.

Si estás haciendo las cosas más complicadas que ni siquiera eso, entonces es posible que desee ver en block_to_partial ayudante de errtheblog, que está muy bien

+0

¡Respuesta fácil y simple! ¡Además FTW! – Sixty4Bit

10

Hasta ahora el mejor que he llegado con es:

def my_cool_helper(name, form) 
    out = capture { link_to name, a_path } 
    out << capture { form.hidden_field name.tableize, value => 'something' } 
end 

¿Hay una mejor manera?

+0

Tu respuesta me ayudó mucho. ¡Gracias! –

Cuestiones relacionadas