2012-01-17 6 views
0

body要素なしでレンダリング3.1レール、とRuby 1.9。私はいくつかのページが<html><head></head><body></body></html>ブロックなしでレンダリングされていることに気付きました。ページは、HTML、頭、と私はシュプレー0.70を使用してサイトに取り組んでいます

代わりに、Railsは<html><body></body></html>ブロックに自動的にページをラッピングしているように見えます。つまり、頭にあることを意図したコード(CSSが含まれ、ページtitleブロックなど)が本体の中に現れます。これらの要素がないため、ヘッドタグやボディタグ(CSSなど)の属性に依存して動作しません。

はっきりと私のレイアウトは、パーシャルとすべてのレンダリングされているが、これらのトップレベルの要素は無視されたり上書きされているので、これは私を困惑。

「一部のページ」と言うと、管理ページでは発生しないことが確認されており、アプリケーションに限定されたページでは発生しません(つまり、spree_application.html.erbレイアウトは使用しません)。コントローラはSpree::BaseControllerをサブクラス化しません。)私は自分のアプリケーションにコピーすることによりspree_application.html.erbレイアウトを上書きしている(私は)選択の余地がなかったし、この問題を持つすべてのページには、そのレイアウトを使用しています。それが要因かもしれませんか? (Here is a page with the broken layout.

は、どのように私は私のルート要素を取り戻すことができますか?

ETA:ここにapp/views/layouts/spree_application.html.erbで私のアプリでは、私が持っているファイルです。これは、問題を示すすべてのページに共通するレイアウトです。 div構造は、Spreeが提供するレイアウトとは微妙に異なることに注意してください。これは、私がDefaceオーバーライドを使用するのではなく、レイアウトを置き換える必要がある理由です。

<!DOCTYPE HTML> 
<%# Overrides the Spree default template %> 
<html> 
    <head data-hook="inside_head"> 
    <%= render 'shared/head' %> 
    <!--[if lte IE 7]> 
      <link rel="stylesheet" type="text/css" href="/stylesheets/ie.css" /> 
    <![endif]--> 
    </head> 
    <body class="<%= body_class %>" id="<%= @body_id || 'default' %>" data-hook="body"> 
    <div id="page-scroll" data-hook> 
     <div class='header-wrapper'></div> 
     <div id="header" data-hook> 
     <ul id="nav-bar" data-hook> 
      <%= render 'shared/nav_bar' %> 
     </ul> 
     <%= render 'shared/logo' %> 
     </div> 

     <div id="wrapper" data-hook> 
     <%= render 'shared/content' %> 
     </div> 
    </div> 

    <%= render 'shared/footer' %> 
    <%= render 'shared/google_analytics' %> 
    </body> 
</html> 
+0

特に内の任意のページ?この問題を再現するためのいくつかの手順を提示できますか? –

+0

レイアウトを壊したページへのリンクを含めるように質問を編集しました。 – pjmorse

+0

さて、あなたはどのようにそのステージに入っていますか?ソリューションを提供する前に、この問題をローカルで再現するためのいくつかの手順が必要です。 –

答えて

1

私は<html>容器の外と<head>容器にのERBコメントを移動することで、この問題を解決しました。私が確認する時間がなかった私の理論は、Defaceが使用されている(これはSpreeで)ERbテンプレートでさえ有効である必要があり、<head>...</head><body>...</body>容器以外のものが<html></html>の中にあることが有効でないことです。だから、Deface(Defaceがそのフードの下で使用するNokogiri)がこれを有効にするために書き直しているか、それらのコンテナを取り除いていて、Railsが出力前に基本コードを追加しています。

関連する問題