2010-12-21 10 views
1

Ich benutze escape_javascript, um eine partielle an den Browser über Ajax zurückzugeben.Rails - escape_javascript ohne all n n n n n

Etwas wie:

$("#inject").html("<%=escape_javascript(render :partial =>"feed/index")%>"); 

Problem ist escape_javascript alle Arten von verschwendeten Speicherplatz wie

outputing endet
\n\n\n\n\n    \n 

Gibt es trotzdem in Rails effizienten escape_javascript? Keine Notwendigkeit für \ n oder lange Lücken von Räumen?

Danke

+0

Ist die escape_javascript-Methode, die den verschwendeten Raum erzeugt, oder ist es durch Ihre partielle verursacht? –

+0

Es ist meine teilweise – AnApprentice

Antwort

3

Es gibt keinen Standard-Rails-Weg, dies zu tun. Man könnte es nur um sich selbst zu entfernen, bevor es zu escape_javascript wie dies vorbei:

$("#inject").html("<%= escape_javascript((render :partial => 'feed/index').squeeze(" ").gsub(/[\n\t]/,'')) %>"); 

Ich bin sicher, dass es ein süßer regulärer Ausdruck ist, dass es besser tun würde, aber das wird ziemlich nahe kommen und nicht Ihre HTML schaden. Der gsub wird Zeilenumbrüche und Tabs durch nichts ersetzen. Die Squeeze-Methode ersetzt mehrere Vorkommen von Leerzeichen mit nur einem Leerzeichen. Sie möchten nicht alle Leerzeichen entfernen, da sie wahrscheinlich in Ihrem HTML-Code absichtlich auftreten.

+0

Danke, das funktioniert. obwohl es großartig wäre, wenn es eine Möglichkeit gäbe, dies global zu machen "oder vielleicht sollte ich einen Helfer wie escape_javascript_squeezed machen. Gedanken? – AnApprentice

+0

Ya, um es global zu tun, denke ich, dass es eine gute Idee wäre, einen Helfer zu erstellen, der es getan hat . – dontangg

0

Ich werde diesen Thread wiederbeleben, da ich glaube, dass es hier ein Missverständnis gibt.

escape_javascript Die Methode, die auch j verkürzt werden kann, sollte nicht angezeigt jeden Zeilenumbruch entkommen (\ n), wenn append mit jQuerys verwendet, prepend, html oder Funktionen des dergleichen.

Die wahrscheinlichste Situation ist, dass Ihr gerenderter partieller "feed/index" einen anderen Partial innerhalb davon hat, der ebenfalls geflutet wird. Das bedeutet, dass JavaScript zweimal die Zeilenumbrüche löscht, wodurch sie falsch interpretiert werden.