Voglio rendere un partial nel mio file js.erb così posso usare l'HTML generato nel mio Javascript. Ecco un codice per servire da esempio.Rendering parziale all'interno di js.erb. È possibile ottenere una stringa raw in modo da poter eliminare gli spazi bianchi?
create.js.erb
$(function(){
var html = "<%= render(:partial => `pretty_box`) %>";
$("#container").prepend(html);
});
_pretty_box.html.haml
.pretty_box_container
.title
Something Pretty
Quando create.js.erb è reso, ottengo il seguente:
$(function(){
var html = "<div class="pretty_box_container>
<div class="title">
Something Pretty
</div>
</div>";
$("#container").prepend(html);
});
Come ci si aspetterebbe, questo rompe il mio javascript. Ho bisogno di togliere gli spazi bianchi dal risultato del rendering parziale. Il problema è che il valore di ritorno di render
è un oggetto ActiveSupport::SafeBuffer
che sostituisce tutti i metodi "non sicuri" (vedere UNSAFE_STRING_METHODS), incluso strip
. Quindi chiamare render(:partial =>
pretty_box ).strip
HTML: codifica l'intera stringa.
Ho provato tutti i tipi di combinazioni utilizzando i metodi html_safe
o to_s
. Non funzionano perché restituiscono self
e l'utilizzo di raw
non funziona perché chiama to_s.html.safe
.
So che posso aggiungere i caratteri >
e <
al mio HAML, ma non voglio farlo per ogni riga di ogni parziale.
Grazie mischa. Ci proverò stasera. – John
lavorato. Grazie! – John
Prego. Sono contento che ha funzionato. – Mischa