2012-04-30 6 views
17

Mein Helfer funktioniert wie folgt:Schienen Helfer - wie kann ich einen Helfer bekommen, um mich eine `<br/>` (oder andere Markup)

def some_help(in_string) 
    in_string + " and more" 
end 

Aber ich will es vor der Ausgabe an ein
tun und ich halte die < br> Zeichen selbst wörtlich, dh keine Pause, aber was ich will ist ein < br> das ist das Problem.

so

def some_help(in_string) 
    "<br/>" + in_string + " and more" 
end 

funktioniert nicht richtig.

+0

Normalerweise möchten Sie erwähnen, was speziell nicht funktioniert. –

+1

Die Frage wurde aktualisiert – junky

Antwort

33

Verwenden tag(:br) statt "<br/>".

content_tag(:br) schafft Öffnen und Schließen br Tags und mit raw oder html_safe nur hässlich ist (nicht gefährlich ganz zu schweigen).

+0

Warum ist die Verwendung von 'roh' oder' html_safe' gefährlich? – fmmatheus

+1

Wenn Sie 'row.' und' html_safe' mit Benutzereingaben verwenden und vergessen, diese Eingabe zu umgehen, werden Sie sich selbst auf einen XSS-Angriff einstellen. 'rough ("
# {h user_input} ")' ist in Ordnung, aber 'raw ("
# {user_input} ")' ist gefährlich. Der Unterschied ist die 'h' Methode, die ein Alias ​​für die Methode' html_escape' ist. – Ashitaka

2

Ich bin mir nicht sicher, ob ich dich verstehe. Sie fügen <br /> in Ihrer Zeichenfolge hinzu, und es bleibt in Ebene, während Sie möchten, dass es den Effekt einer Zeilenschaltung hat? Wenn dies der Fall ist, müssen Sie Ihre Zeichenfolge als HTML-sicher markieren. Sie tun dies mit "somestring".html_safe.

0

Rails entkoppelt automatisch HTML-Zeichen. Verwenden Sie .html_safe für die Zeichenfolge.

Verwandte Themen