2011-09-10 82 views
4

所以我有一個基本的佈局文件:的Rails 3.1鑑於有IFRAME使得佈局停止渲染

<!DOCTYPE html> 
<html dir="ltr" lang="en-US"> 
<head> 
    <%= stylesheet_link_tag "logged_out" %> 
    <%= javascript_include_tag "application" %> 
    <%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/ui-lightness/jquery-ui.css" %> 
</head> 
<body> 
    <!-- header stuff here --> 
    <%= yield %> 
    <!-- footer stuff here --> 
</body> 
</html> 

,並與任何普通HTML的罰款。但是,如果我在一個iframe這樣添加到視圖:

<iframe id="form" height="480" width="320" src="/mobile_preview/preview"/> 

當我渲染頁面的一切都呈現直到iframe中,但屈服後頁腳東西不會呈現。有沒有人遇到過這個?

編輯:作爲其中一個答案指出(謝謝!),我的最初問題中的yield語句是錯誤的。我在我的代碼中的yield語句是正確的,但是在轉移到stackoverflow時是一個錯字。

注意:如果您嘗試複製iframe正在使用jquery mobile。

+0

查看呈現的頁面源代碼 - 直到頁面加載完成後才能獲取iframe。 – klochner

回答

14

的問題是你如何包括。你認爲你包括自閉標籤,並且它在那裏結束。但是,您不會將您的頁面作爲XML發送,並且HTML沒有自閉標籤的概念,最終只是垃圾。所以你:

<iframe id="form" height="480" width="320" src="/mobile_preview/preview"/> 

真的解釋爲:

<iframe id="form" height="480" width="320" src="/mobile_preview/preview"> 

和頁面的其餘部分被解釋爲內部標籤忽略的內容。這就是爲什麼你不應該在HTML文檔中使用自閉標籤 - 它們並不像你認爲的那樣工作。

將其更改爲:

<iframe id="form" height="480" width="320" src="/mobile_preview/preview"></iframe> 

你可以找到它,如果你看着使用Firebug或Chrome檢查解析的DOM樹。

作爲一個好處:它與Rails無關,服務器返回響應就像以前一樣,你可以在日誌中看到它。這只是你的標記如何被瀏覽器解釋的問題。

+0

謝謝MBO! Stackoverflow會讓我等22個小時,但是我會盡可能獎勵你。 – Msencenb

+0

@MBO,非常感謝你..我在這個令人討厭的問題上奮鬥了很長一段時間..多麼愚蠢的錯誤:) – RameshVel

2

你錯了clossing Ruby代碼的地方

<%= yield => 

正確的是

<%= yield %> 
+0

當簡化爲SO時,這是一個錯字。我的真實代碼具有正確的收益率。我會更新問題 – Msencenb