Chcę renderować częściowe w moim pliku js.erb, aby można było używać wygenerowanego kodu HTML w moim JavaScript. Oto przykładowy kod.Renderowanie częściowe wewnątrz js.erb. Czy możliwe jest uzyskanie nieprzetworzonego łańcucha znaków, aby można było usunąć białe znaki?
create.js.erb
$(function(){
var html = "<%= render(:partial => `pretty_box`) %>";
$("#container").prepend(html);
});
_pretty_box.html.haml
.pretty_box_container
.title
Something Pretty
Kiedy create.js.erb jest renderowany, mam następujące:
$(function(){
var html = "<div class="pretty_box_container>
<div class="title">
Something Pretty
</div>
</div>";
$("#container").prepend(html);
});
Jak można się spodziewać, to łamie mój javascript. Muszę usunąć białe znaki z wyniku renderowania częściowego. Problem polega na tym, że wartość zwracana obiektu render
to obiekt ActiveSupport::SafeBuffer
, który zastępuje wszystkie "niebezpieczne" metody (patrz UNSAFE_STRING_METHODS), w tym strip
. W ten sposób wywołanie render(:partial =>
pretty_box ).strip
koduje cały ciąg znaków.
Próbowałem różnych kombinacji za pomocą metod html_safe
lub to_s
. Nie działają, ponieważ zwracają self
, a używanie raw
nie działa, ponieważ wywołuje to_s.html.safe
.
Wiem, że mogę dodać znaki >
i <
do mojego HAML, ale nie chcę tego robić dla każdego wiersza każdej części.
Dzięki, mischa. Spróbuję tego dziś wieczorem. – John
Pracował. Dzięki! – John
Nie ma za co. Cieszę się, że to działało. – Mischa