2012-03-29 5 views
0

Rails 3.2.1: Ich habe folgendes div, die ein teilweiseFormat.js wird nur einen Teil machen, die eine einzelne Zeile enthält

<div id="weighin"> 
<%= render :partial => "my_weight/weighin" %> 
</div> 

Die teilweise enthält ein Formular aufruft, dass Ajax Beiträge (dh hat: remote => true) an einen Controller mit:

respond_to do |format| 
    format.js 
end 

Die .js.erb Datei hat eine einzige Zeile:

$("#weighin").html("<%= render :partial => "my_weight/weighin1" %>"); 

Die _weighin 1.html.erb Teildatei hat eine einzige Zeile:

<p><%= @my_weight[1].weight %></p> 

Dies funktioniert, indem das Original div mit dem Wert des @my_weight Feld ersetzt wird - so die Grundstruktur arbeiten alle ok

Rails wird jedoch nicht mehr Code in der partiellen verarbeiten - wenn ich so viel wie ein Wagenrücklauf an das Ende dieser eine Zeile hinzufügen, bestätigt das Serverprotokoll alles ok, aber kein Skript wird auf der Seite ausgeführt - dh nichts ändert sich.

Das gleiche passiert, wenn ich versuche, mehr HTML in den Teil zu setzen, sondern alles in einer einzigen Zeile - das läuft auch nicht.

Wie kann ich mehr als eine einzelne kurze Anweisung in einem Teil ausgeben?

Antwort

3

OK, dachte ich, this out:

$("#weighin").html("<%= escape_javascript(render :partial => "my_weight/weighin1") %>"); 

escape_javascript wesentlich ist

Verwirrend ist, dass, je nachdem, was in den HTML-Code ist() Sie senden, dies manchmal ohne escape_javascript arbeiten , führt man zu einer falschen Schlussfolgerung ... :-)

Verwandte Themen