2012-09-29 6 views
7

Tengo un ayudante que estoy usando para generar un formulario. Los parámetros que se utilizan para generar los campos del formulario se pasan al helper. No puedo entender cómo usar el bloque fuera de una plantilla.¿Cómo uso form_tag desde dentro de un ayudante?

Por ejemplo:

def generate_form(path, fields) 
    form_tag(path, method: :get) do 
     # what do I do in here? 
    end 
end 

cuando me hacen parciales dentro del bloque, no aparece nada en la página web prestado. Si uniré varias etiquetas (field_tag, text_field_tag, etc.), aparecerá html en bruto en la página.

estoy usando Rails 3.1.0 ayudantes elemento

Respuesta

11

rieles volver cadenas, por lo que puede hacer:

def generate_form(path, fields) 
    s = form_tag(path, method: :get) do 
    p = input_tag 
    p << submit_tag #(everything will be wrapped in form tag) 
    p #returns p from block 
    end 
    s.html_safe #returns s and avoids html escaping 
end 
+0

que no estaba al tanto de los buffers de seguridad. Lo que sucedía era que estaba haciendo una inyección con una cadena como valor inicial: fields.inject (''). Lo cambié a fields.inject (''. Html_safe) y funciona ahora. – mushroom

Cuestiones relacionadas