2011-01-27 6 views
12

Ho un metodo di supporto per la mia app Rails che restituisce una stringa con codice HTML per un modulo di iscrizione a Google Gruppi. Sfortunatamente, esce sulla pagina come testo normale. Come posso forzarlo a renderizzare come HTML? Grazie in anticipo.Metodo Helper Ruby on Rails - L'HTML è visualizzato come testo semplice

+0

Si prega di mostrarci un po 'di codice; in particolare lo spot nel file ERB in cui viene chiamato l'helper e vengono visualizzati i risultati. –

risposta

42

Il risultato del tuo helper deve essere contrassegnato come "html_safe" in Rails 3. In caso contrario, i tag verranno sfuggiti.

def my_helper 
    data = "<p>Hello!</p>" 
    data.html_safe 
end 
+0

Grazie! Ha funzionato perfettamente – SZH

+0

accettare la risposta per favore – Mauricio

+0

Ho provato ad accettare la risposta prima, ma ha detto che dovevo aspettare altri 8 minuti. Ora lasciami. – SZH

2

Suppongo che si sia verificato un problema con Rails html sanitize. da rotaie changelog

Non è più necessario chiamare h (stringa) per sfuggire output HTML, si è attivata per impostazione predefinita in tutti i modelli di vista. Se lo standard desidera la stringa senza caratteri di escape, chiama raw (stringa).

provarlo

0

Una cosa a cui prestare attenzione è quando si entra più stringhe come questo

def custom_check_box(checked) 
    '<span class="my-custom-checkbox '+(checked ? 'checked' : '')+'"></span>'.html_safe 
end 

In questo caso, solo l'ultima parte è contrassegnato come sicuro html. Assicurati di avere il tutto.

def custom_check_box(checked) 
    ('<span class="my-custom-checkbox '+(checked ? 'checked' : '')+'"></span>').html_safe 
end