2011-11-30 50 views
6

Tôi đang xây dựng một ứng dụng bằng Backbone.js, Underscore.js, HAML và Coffeescript.Nội suy bên trong thuộc tính html với Underscore.js

Sự cố tôi gặp phải là nhận các biến để nội suy bên trong thuộc tính phần tử html.

<% _.each(collection.models, function(document) { %> 
%tr 
    %td 
    %input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>"} 
    %td <%= document.attributes.id %> 
    %td <%= document.attributes.name %> 

    <% } %> 
<% }); %> 

giá trị của đối tượng đang hiển thị đúng cách bên trong của <td>, nhưng không nằm trong thuộc tính giá trị của đầu vào.

Nội suy có thể bên trong thuộc tính của một phần tử không? Tôi không thể tìm ra giải pháp.

Cảm ơn

+0

Tôi không có kinh nghiệm trong lĩnh vực này, nhưng xin vui lòng xem [ở đây] (https://github.com/9elements/haml-coffee) nếu đây là những gì bạn cần. Nó hỗ trợ coffeescript trong các thuộc tính. – kubetz

+0

Tôi không chắc chắn có gì sai với mã của bạn, nhưng tôi đã sử dụng nội suy với các mẫu gạch dưới. – Jack

+0

Vấn đề là với nội suy bên trong thuộc tính phần tử html. – Chris

Trả lời

0

Có vẻ như bạn đang không đóng chức năng trong mẫu đúng cách (thử thêm <% }); %> đến hết mẫu của bạn).

Tôi không thực sự quen thuộc với cú pháp HAML nhưng đây là ví dụ đơn giản về jsfiddle sử dụng HTML thuần túy và mẫu gạch dưới. Như bạn có thể thấy bạn chắc chắn có thể sử dụng nội suy ở giữa các thuộc tính phần tử.

+0

Xin lỗi, tôi không bao gồm mã hoàn chỉnh. Tôi đang cập nhật câu hỏi. – Chris

+0

Cảm ơn bạn đã liên kết. Tôi thấy rằng họ đang nội suy thành công trong các thuộc tính của một phần tử. – Chris

+0

Sau đó, có lẽ vấn đề là với cú pháp HAML của bạn, vì nếu bạn nhìn vào jsfiddle i liên kết với bạn có thể thấy rằng nó chính xác nội suy bên trong thuộc tính giá trị của hộp kiểm. – Jack

4

Giải pháp cho vấn đề này là sử dụng tùy chọn :escape_attrs của HAML.

Haml::Engine.new(template, :escape_attrs => false).render 
2

Bạn có thể thử sử dụng html_safe là phương thức trên đối tượng Chuỗi. Điều này sẽ thoát khỏi nhân vật html trong báo cáo biến (< ví dụ) và sẽ rời khỏi nguyên vẹn cho gạch để đánh giá trong thời gian chạy:

%input{:type => 'checkbox', :name => "documents[]", :value => "<%= document.attributes.id %>".html_safe} 

(Thử nghiệm trên đường ray 3.0.13)

+0

Điều này phù hợp với tôi trên Rails 3.2. –

+0

Điều này không hoạt động trên Rails 4.2.6, nhưng tôi không chắc tại sao. Tôi có thể đặt cùng một mã bên ngoài một giá trị thuộc tính, và '<' của tôi không được thoát, nhưng bên trong giá trị thuộc tính, nó là. – sameers

+0

Ý của tôi là, [tài liệu trên html_safe] (http://apidock.com/rails/String/html_safe) nói '.html_safe' tương đương với' raw() 'nhưng mặc dù nó thực tế tương đương với các giá trị thuộc tính bên ngoài , khi được truyền qua công cụ mẫu HAML, không phải, bên trong các giá trị thuộc tính. Điều này rất bí ẩn. – sameers

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