6

Sto lavorando ad un semplice plugin qui, e fino a qui sta funzionando. Tranne il mio aiutante. È un helper molto semplice, deve solo fare eco a <span></span> per l'analisi javascript successiva.Il mio assistente rotaie sta rendendo '<' come '<'! Come renderlo correttamente?

Il problema è che non sta rendendo corretto l'html, ma sostituisce caratteri speciali con il codice equivalente html.

mio plugin di inizializzazione:

ActionView::Helpers.send :include, Test 

mio plugin di aiuto:

module Test  
    def only_for_testing 
    render(:text => "<span></span>") 
    end 
end 

Quando chiamo l'aiutante only_for_testing all'interno della vista, invece di rendere il "<span></span>" rende "&lt;span&gt;&lt;/span&gt;"

Ho provato a rimuovere il rendering, restituire solo la stringa, lo stesso effetto. Non voglio davvero creare un partial per questo, perché è un html molto semplice, e non è per il layout, è solo per l'analisi.

Qualche idea su cosa avrei potuto fare di sbagliato qui?

risposta

16

Rails 3 esegue il escape di HTML per impostazione predefinita nella vista. È necessario utilizzare l'helper raw() o "stringa HTML qui" .html_safe

6
module Test  
    def only_for_testing 
    render(:html=> "<span></span>") 
    end 
end 
3

in rails 3.2, il mio helper non ha riconosciuto il simbolo ": html", ma credo che sia stato sostituito con ": inline" come questo è ciò che ha funzionato per me

module IndexHelper 
    def logo 
     render(:inline=> "<div class='css_name'></div>") 
    end 
end