html
  • ruby-on-rails
  • haml
  • 2010-08-22 4387 views 5 likes 
    5

    Tôi đang cố gắng để thực hiện các nội dung sau đây trong mã nguồn:Rails + Haml: Làm thế nào để tham số thẻ unescape?

    <div id="box<%=id%>"></div> 
    

    Nếu không có bất kỳ dấu hiệu thoát trong Haml.

    %div{ :id => "box_<%=id%>" } 
    

    sản xuất

    <div id='box_&lt;%=id%&gt;'></div> 
    

    Ngay bây giờ cách duy nhất tôi có thể làm điều này với Haml là sử dụng :plain lọc và hardcode HTML mà không sử dụng bất kỳ Xem Helpers. Lam sao tôi co thể sửa no?

    tôi cần điều này vì tôi buộc phải tuân theo quy ước này vì ước cú pháp của bên thứ ba: JavaScript Micro-Templating

    tham khảo:

    Haml reference

    Trả lời

    4

    Bạn nói rằng bạn đang mã hóa trong Haml, nhưng các dấu ngoặc cho biết Erb.

    • Bước 1. Cố gắng bình thường của Ruby suy:

      %div{ :id => "box_#{id}" } 
      
    • Bước 2. Không có bước 2.

    Cập nhật: Khi tôi viết câu trả lời này, tôi đã không được sử dụng một khuôn khổ khuôn mẫu JS trước. Lời xin lỗi của tôi vì không rên rỉ tại sao điều này là cần thiết.

    +0

    Xin lỗi nhưng tôi không mã.Tôi mã trong Haml và cần <%=id%> không thoát trong mã nguồn (liên kết Micro-Templating giải thích cú pháp). David, làm thế nào tôi có thể khắc phục điều đó? – ep3static

    +0

    Tôi đang bối rối. Bạn đang tạo mẫu cho một ngôn ngữ để phân tích cú pháp bằng cách sử dụng * ngôn ngữ templating khác? Tôi không nghĩ rằng tôi sẽ đi tuyến đường này. –

    +0

    Right :) Có lẽ liên kết Micro-Templating sẽ giải thích nó tốt hơn. – ep3static

    2

    Về cơ bản, chỉ cần không sử dụng HAML cho câu lệnh đó. Ví dụ, giả sử bạn đang làm một cái gì đó như thế này trong HAML ngay bây giờ:

    %script#template(type="text/html") 
        %div{ :id => "box_<%=id%>" } 
    

    Thay vào đó, làm:

    %script#template(type="text/html") 
        <div id="box_<%=id%>"></div> 
    

    Nó sẽ giải thích các thẻ script như HAML một cách chính xác, sau đó kể từ khi bạn không sử dụng bất kỳ %, #, v.v. để bắt đầu dòng tiếp theo, nó sẽ diễn giải dòng đó dưới dạng văn bản thuần túy và chuyển nó qua. Dường như làm việc tốt cho tôi và tôi có một trường hợp rất giống với bạn. Một trong những điều tôi đã làm là thay đổi jQote (cỗ máy template Tôi đang sử dụng cho khuôn mẫu javascript của tôi) thẻ từ % để $ với tuyên bố này Javascript trong head of the page:

    %script(type="text/javascript") 
        $(function() { $.jqotetag('$'); }); 
    

    Bằng cách đó các % dấu hiệu không nhầm lẫn giữa thông dịch viên Ruby. Vì vậy, ví dụ cuối cùng sẽ là:

    %script#template(type="text/html") 
        <div id="box_<$=id$>"></div> 
    

    Chúc may mắn!

    0
    +0

    giải quyết vấn đề theo một nửa. Trong trường hợp của tôi, tôi cần phải làm!

    chfw

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