2011-10-31 21 views
6

Tôi đang sử dụng ERB engine để tạo phiên bản HTML ngoại tuyến của trang trên trang web Rails của tôi. Trang này hiển thị tuyệt vời khi được hiển thị bằng Rails, nhưng tôi gặp sự cố khi tạo ERB bằng chính bản thân mình (mặc dù sử dụng cùng một mẫu ERB).Gọi ERB không có Rails: phương pháp không xác định 'raw'

Trước tiên, tôi gặp lỗi undefined method 't' và tôi đã giải quyết bằng cách thay thế tất cả các cuộc gọi <%=t(...)%> bằng <%=I18n.translate(...)%>.

Bây giờ tôi nhận được undefined method 'raw'. Tôi có nên thay thế tất cả các cuộc gọi <%=raw(...)%> bằng một số thứ khác không? Nếu có?

Trả lời

6

raw được định nghĩa là trình trợ giúp trong thư viện actionpack/action_view để không có đường ray, bạn không thể sử dụng nó. Nhưng ERB khuôn mẫu cho thấy sản lượng của nó mà không cần bất kỳ thoát:

require 'erb' 
@person_name = "<script>name</script>" 
ERB.new("<%= @person_name %>").result # => "<script>name</script>" 

Và vì điều này cho mục đích thoát có ERB::Util#html_escape phương pháp

include ERB::Util 
ERB.new("<%= h @person_name %>").result # => "&lt;script&gt;name&lt;/script&gt;" 
+0

Tôi muốn sử dụng các tập tin ERB cùng, không phải là một với liệu và một không có ... Tôi đã thêm 'include OutputSafetyHelper' (giống như tôi đã bao gồm các trình trợ giúp tùy chỉnh của tôi), nhưng có được' uninitialized constant OutputSafetyHelper' –

+3

try 'include ActionView :: Helpers :: OutputSafetyHelper' –

+2

Vâng, Marian nói đúng. Và đừng quên về 'require 'action_view''. Và nếu bạn sử dụng phiên bản Rails trước 3.1.0, bạn nên sử dụng 'ActionView :: Helpers :: RawOutputHelper' thay vì' OutputSafetyHelper ' – WarHog

Các vấn đề liên quan