2011-12-13 35 views
44

Tôi đang sử dụng Twitter-Bootstrap trong ứng dụng Rails 3.1.3. Tôi có rất nhiều yếu tố với popovers như:Tôi có thể sử dụng các thẻ html trong nội dung dữ liệu pop-up của Twitter-bootstrap không?

<a data-original-title="Quality" rel="popover" data-content="Did they do a good job? 5 for Really Nice, 4 for Good Enough, 3 for Average, 2 for Somewhat OK, 1 for Really Bad">Q</a> 

Tôi muốn có một danh sách lệnh trong phần nội dung tương tự như:

<OL reversed="reversed"> 
    <LI> for Really Nice </LI> 
    <LI> for Good Enough </LI> 
    ... 
</OL> 

Có một cách đơn giản để làm điều này mà không sửa đổi JavaScript ? Bất cứ điều gì tôi cố gắng, mã html được hiển thị trên trình duyệt thay vì được giải thích như vậy.

CẬP NHẬT

Sử dụng đoạn mã sau mỗi đề nghị của David

link_to 'Q', '#', options: { data-original-title: "Quality", rel: 'popover', data-content: "Did they do a good job? <ol><li> for Really Nice </li><li>...</li></ol>".html_safe } 

tạo ra một lỗi cú pháp với thiết lập của tôi. Tôi nghĩ điều này giải thích tại sao: Ruby 1.9 hash with a dash in a key. Vì vậy, tôi đang sử dụng:

<%= link_to 'Q', '#', options: { :"data-original-title" => "Quality", :rel => 'popover', :"data-content" => "Did they do a good job? <ol><li> for Really Nice </li></ol>".html_safe } %> 

Điều này không hiệu quả. Nó tạo ra HTML sau:

<a href="#" options="{:&quot;data-original-title&quot;=&gt;&quot;Quality&quot;, :rel=&gt;&quot;popover&quot;, :&quot;data-content&quot;=&gt;&quot;Did they do a good job? &lt;ol&gt;&lt;li&gt; for Really Nice &lt;/li&gt;&lt;/ol&gt;&quot;}">Q</a> 

Trả lời

89

Bạn cần phải tạo một popover dụ rằng có html tùy chọn kích hoạt (nơi này trong tập tin javascript của bạn sau khi mã JS popover):

$('.popover-with-html').popover({ html : true }); 

sau đó, cú pháp liên kết sẽ là:

<%= link_to('Q', '#', :class => "popover-with-html", :title => "Quality", "data-content" => "#{some_content_object.html_safe}") %> 

Nếu bạn đang tạo động nội dung, thì bạn cần sử dụng html_safe như David đã đề xuất để Rails không thoát khỏi mã HTML. Nếu không, bạn chỉ có thể đặt HTML trực tiếp trong thuộc tính nội dung đó.

+0

Với tùy chọn HTML giải pháp này được truyền chính xác. Tuy nhiên HTML vẫn không được giải thích cho dữ liệu nội dung. Đây là những gì Firefox hiển thị: Q Arman

+0

Hoạt động tốt cho tôi trong cả Chrome và Firefox. – iwasrobbed

+0

Dường như Rails đang thoát HTML trước khi nó được gửi đến JS bằng cú pháp trên. Các tùy chọn sau hoạt động với tùy chọn "html: true": S Arman

0

Vâng, bạn có thể làm điều đó, nhưng bạn cần phải gọi html_safe trên chuỗi của bạn (nếu chuỗi được tạo ra bởi Rails)

link_to 'Q', '#', :title => "Quality", :rel => 'popover', "data-content" => "Did they do a good job? <ol><li> for Really Nice </li><li>...</li></ol>".html_safe } 
+0

Cảm ơn David! Tôi đã thử đề xuất của bạn và tôi nghĩ đó là con đường đúng. Tuy nhiên, "data-original-title" và "data-content" không phải là các thuộc tính HTML hợp lệ có thể được chuyển đến link_to. "title" hoạt động thay vì "data-original-title". Tôi không thể tìm thấy bất cứ thứ gì hoạt động thay vì "nội dung dữ liệu". Bất kỳ đề xuất? – Arman

+0

Bạn có thể vượt qua chúng trong một băm 'tùy chọn'. Xem câu trả lời cập nhật của tôi. –

+0

Với Ruby 1.9.2 mã của bạn tạo ra một lỗi cú pháp. Tôi đã phải sử dụng <% = link_to 'Q', '#', tùy chọn: {: "data-original-title" => "Chất lượng",: rel => 'popover',: "data-content" => " Thay vào đó, họ có thực hiện tốt công việc hay không?

  1. đối với số điện thoại thực sự là
  2. ...
".html_safe}%>. Điều này không hoạt động. HTML được tạo là: Q Arman

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