Tôi muốn hiển thị một phần trong tệp js.erb của mình để tôi có thể sử dụng HTML được tạo trong Javascript của mình. Dưới đây là một số mã để phục vụ như một ví dụ.Hiển thị một phần bên trong js.erb. Có thể lấy chuỗi thô để tôi có thể xóa khoảng trống không?
create.js.erb
$(function(){
var html = "<%= render(:partial => `pretty_box`) %>";
$("#container").prepend(html);
});
_pretty_box.html.haml
.pretty_box_container
.title
Something Pretty
Khi create.js.erb được trả lại, tôi nhận được như sau:
$(function(){
var html = "<div class="pretty_box_container>
<div class="title">
Something Pretty
</div>
</div>";
$("#container").prepend(html);
});
Như bạn mong đợi, điều này phá vỡ javascript của tôi. Tôi cần phải loại bỏ khoảng trắng từ kết quả của việc hiển thị một phần. Vấn đề là giá trị trả lại của render
là đối tượng ActiveSupport::SafeBuffer
, ghi đè tất cả các phương pháp "không an toàn" (xem UNSAFE_STRING_METHODS), bao gồm strip
. Vì vậy, hãy gọi số render(:partial =>
pretty_box ).strip
HTML mã hóa toàn bộ chuỗi.
Tôi đã thử tất cả các loại kết hợp bằng các phương pháp html_safe
hoặc to_s
. Chúng không hoạt động vì chúng trả về self
và việc sử dụng raw
không hoạt động vì nó gọi là to_s.html.safe
.
Tôi biết tôi có thể thêm >
và <
ký tự vào HAML của tôi, nhưng tôi không muốn làm điều đó cho mọi dòng của từng phần.
Cảm ơn bạn đã xác thực. Tối nay tôi sẽ thử cái này. – John
Đã hoạt động. Cảm ơn! – John
Bạn được chào đón. Vui vì nó hoạt động. – Mischa