2012-09-29 12 views
7

Ho un helper che sto usando per generare un modulo. I parametri utilizzati per generare i campi del modulo vengono passati nell'helper. Non riesco a capire come usare il blocco al di fuori di un modello.Come utilizzare form_tag da un helper?

Ad esempio:

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

Quando mi rendo parziali all'interno del blocco, non viene visualizzato nella pagina web resa. Se unisco una serie di tag (field_tag, text_field_tag, ecc.), Nella pagina appare html raw.

Sto usando Rails 3.1.0

risposta

11

Rails elemento aiutanti restituiscono stringhe, in modo da poter fare:

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

io non era a conoscenza di buffer di sicurezza. Quello che stava succedendo era che stavo facendo un'iniezione con una stringa come valore iniziale: fields.inject (''). L'ho modificato in fields.inject (''. Html_safe) e ora funziona. – mushroom

Problemi correlati