2011-01-27 33 views
12

Tôi có một phương thức trợ giúp cho ứng dụng Rails của tôi trả về một chuỗi có mã HTML cho biểu mẫu đăng ký Google Groups. Thật không may, nó xuất hiện trên trang như văn bản thuần túy. Làm thế nào tôi có thể buộc nó hiển thị dưới dạng HTML? Cảm ơn trước.Phương thức trình trợ giúp Ruby on Rails - HTML được hiển thị dưới dạng văn bản thuần túy

+0

Vui lòng chỉ cho chúng tôi một số mã; đặc biệt là vị trí trong tệp ERB của bạn, nơi trình trợ giúp được gọi và kết quả được hiển thị. –

Trả lời

42

Kết quả của trình trợ giúp của bạn cần được đánh dấu là "html_safe" trong Rails 3. Nếu không, các thẻ sẽ được thoát.

def my_helper 
    data = "<p>Hello!</p>" 
    data.html_safe 
end 
+0

Cảm ơn! Làm việc hoàn hảo. – SZH

+0

chấp nhận câu trả lời xin vui lòng – Mauricio

+0

Tôi đã cố gắng chấp nhận câu trả lời trước đây, nhưng nó nói rằng tôi cần phải chờ thêm 8 phút nữa. Bây giờ nó cho tôi. – SZH

2

Tôi cho rằng đó là vấn đề với Rails html sanitize. từ đường ray changelog

Bạn không còn cần phải gọi h (string) để thoát ra HTML, đó là ngày bởi mặc định trong tất cả các quan điểm mẫu. Nếu bạn muốn chuỗi không thoát, hãy gọi nguyên (chuỗi).

thử nó

0

Một điều cần xem ra cho được khi tham gia nhiều chuỗi như thế này

def custom_check_box(checked) 
    '<span class="my-custom-checkbox '+(checked ? 'checked' : '')+'"></span>'.html_safe 
end 

Trong trường hợp này, chỉ có phần cuối cùng được đánh dấu là an toàn html. Hãy chắc chắn rằng bạn nhận được toàn bộ điều.

def custom_check_box(checked) 
    ('<span class="my-custom-checkbox '+(checked ? 'checked' : '')+'"></span>').html_safe 
end 
Các vấn đề liên quan