2013-01-01 31 views
8

Tôi đang sử dụng mailgun (mặc dù câu hỏi này không có gì để làm với mailgun) để phân tích cú pháp email đến và mailgun sẽ http đăng email được phân tích cú pháp đến máy chủ của tôi. Khi tôi nhận được bài đăng, tôi nhận được mã html cho email nhiều phần. Tôi muốn hiển thị email html để người dùng của tôi, tôi đang sử dụng đường ray, vì vậy nó là một cái gì đó giống nhưLàm thế nào để vô hiệu hóa nền tảng hoặc kiểu dáng bootstrap cho một khối mã html?

<div> 
    <%= raw(message.body_html) %> 
</div> 

Tuy nhiên, có vẻ khác nhau hơn là khi tôi xem các email trong yahoo hay hotmail (Tôi biết khác nhau ứng dụng email sẽ hiển thị các email html khác nhau, nhưng tôi trông rất khác nhau).

Sau đây là cách nó trông giống trên máy khách tự xây dựng của tôi: html email display in my self-built client

Và đây là cách có vẻ trong yahoo cho cùng một email: html email display in yahoo

tôi sử dụng Zurb Foundation như khuôn khổ phong cách của tôi. Tuy nhiên, tôi nghĩ rằng html email đi kèm với phong cách riêng của mình trong dòng, tôi nhìn vào mã nó trông giống như nó, sau đó nó sẽ trông tương tự đủ với các khách hàng khác.

Vì vậy, cách tốt nhất để hiển thị email html giả sử bạn nhận được một khối mã html và muốn hiển thị nó như là không cho phép các khung công tác khác ghi đè kiểu của nó?

Hơn nữa, là nó có thể vô hiệu hóa Foundation (hoặc twitter bootstrap cho rằng vấn đề) phong cách cho một khối mã, ví dụ, một cái gì đó giống như

<div> 
    <% disable_foundation_styling begin %> 
    <%= raw(message.body_html) %> 
    <% end %> 
</div> 

Tất nhiên "disable_foundation_styling" chỉ là trí tưởng tượng của tôi.

Cảm ơn trước!

!!!!!!!!! Cập nhật 1/1/2013 !!!!!!!!!!!!!!!

Như @Alex L. đã đề xuất, tôi đã thử nhưng không hoạt động như mong đợi. Khung nội tuyến hiển thị mọi thứ trong chế độ xem như trước (xem hình bên dưới) và điều đó dễ hiểu vì nội dung khung nội tuyến chỉ là chế độ xem của một trình điều khiển khác, trong trường hợp đường ray sẽ bao gồm tất cả các mẫu bố cục ứng dụng. Tuy nhiên, thanh công cụ không phải là mối quan tâm lớn nhất của tôi, đó là những gì bên trong khung nội tuyến trông giống hệt như trước đây. enter image description here

Tôi nghi ngờ khung nội tuyến có thể không phải là cách để thực hiện. Tôi nhìn vào mã của cả gmail và yahoo, và họ không sử dụng iframe. Thay vào đó, họ sử dụng lồng nhau rất sâu để hiển thị email html. Một phần của email html có cùng mã cho cả yahoo và gmail, ngoại trừ yahoo chèn một id của riêng nó cho mỗi phần tử DOM duy nhất.

Vì vậy, bây giờ tôi nghi ngờ có một số kiểu dáng nền tảng ảnh hưởng đến giao diện của nó.

Tôi sẽ cập nhật khi tôi tìm hiểu thêm.

Trả lời

2

Theo hiểu biết của tôi, không thể hướng dẫn một trình duyệt bỏ qua chọn lọc CSS của trang trong một tập hợp con của DOM. Bạn phải ghi đè rõ ràng kiểu hiện có của trang.

Tuy nhiên, nếu bạn có phần tử iframe, nội dung của khung đó sẽ được hiển thị độc lập với mọi kiểu được áp dụng cho trang chứa.Vì vậy, bạn có thể tạo một bộ điều khiển riêng biệt và xem chỉ để hiển thị nội dung thư của bạn và sử dụng nó làm nguồn cho iframe.

+0

điều này nghe có vẻ hợp lý, hãy để tôi dùng thử tối nay và cập nhật kết quả, cảm ơn rất nhiều. – lionel

+0

hóa ra là không thực hiện thủ thuật, vui lòng xem cập nhật của tôi trong câu hỏi để biết thêm chi tiết. Cảm ơn các đề xuất. – lionel

+0

Bạn nên sử dụng bố cục đặc biệt cho bộ điều khiển và chế độ xem đang được hiển thị bên trong khung nội tuyến hoặc bộ điều khiển phải thực hiện 'render: layout => false'. Zurb, Bootstrap, v.v., vẫn sẽ được bật trong khung nội tuyến nếu bạn sử dụng bố cục ứng dụng thông thường của mình để hiển thị trang nội tuyến. –

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