1

私のArticleコントローラーのすべてのフォーム(newおよびshow)はレイアウト(article.html.erb)を無視していますが、他のすべてのコントローラー(Listなど)はレイアウト(lists.html.erb)を適用しています。

私はCSSと一緒にSASSを実装しましたが、現在、すべてのCSSを/assets/stylesheets/style.css.scss内で定義しています。

CSSとHTMLの両方の構造に変更を加えることができ、それらはすぐにアプリケーションに適用されます。

私は開発環境を使用しており、ruby1.9.3p125とrails3.2.1を実行しています。

なぜこれが起こっているのか誰かが提案できますか?

ListsコントローラーのHTMLレイアウトは...

<!DOCTYPE html>
<html>
<head>
  <title>Inspire</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
    <div id="home_container">
      <div id="header">
        <div id="home_user-space">
          <% if current_user %>
              <%= image_tag avatar_url(current_user), :class =>'floatleft' %>
              <%= link_to current_user.name.capitalize,user_path(:id =>current_user.name), :class =>'user-name' %>
          <% end %>
        </div>
      </div>
      <div id="navigation">
        <%= render 'layouts/navigation' %>
        <ul>
          <li><%= link_to "Log out", signout_path %></li>
          <li><%=  link_to "Your home page", home_path(:id => current_user.name), :class => 'user-name' %></li>
        </ul>

      </div>
      <div id="home_content-container">
        <div id="home_left-side">
          <%= render 'layouts/home_left_side' %>
        </div>
        <div id="home_content">
          <%= yield %>
        </div>
        <div id="home_right-side">
          <%= render 'layouts/home_right_side' %>
        </div>
      </div>
      <div id="footer">
        <%= render 'layouts/footer' %>
      </div>
    </div>
</body>
</html>

私のArticleコントローラーのレイアウトは...

<!DOCTYPE html>
<html>
<head>
  <title>Inspire</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div id="home_container">
  <div id="header">
    <div id="home_user-space">
      <% if current_user %>
          <%= image_tag avatar_url(current_user), :class =>'floatleft' %>
          <%= link_to current_user.name.capitalize,user_path(:id =>current_user.name), :class =>'user-name' %>
      <% end %>

    </div>
  </div>
  <div id="navigation">
    <%= render 'layouts/navigation' %>
    <ul>
      <li><%= link_to "Log out", signout_path %></li>
    </ul>
  </div>
  <div id="home_content-container">
    <div id="home_left-side">
      <%= render 'layouts/home_left_side' %>
    </div>
    <div id="home_content">
      <%= yield %>
    </div>
    <div id="home_right-side">
      <%= render 'layouts/home_right_side' %>
    </div>
  </div>
  <!--todo what about the footer-->
  <div id="footer">
    <%= render :partial => 'layouts/footer' %>
  </div>
</div>
</body>
</html>
4

2 に答える 2

1

記事のコントローラーで、次のことを確認してください。

# app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
  layout "article"
  #...
end

単なる観察ですが、いくつかの空白を除いて、2 つのレイアウトは同一です。なんで?コピー&ペーストエラー?そうでない場合、疑問が生じます: 記事のレイアウトが使用されていないことをどのように知ることができますか? 開発サーバーのログを調べて、使用されているレイアウトを確認できます。

また、開発中のアセットをコンパイルするためにアセット パイプラインを設定したのではないでしょうか? または実行しbundle exec rake assets:precompileますか?持っている場合は、コンパイル ディレクトリを削除し/public/stylesheets/compiled、変更を加えて、ブラウザーでアプリケーションを更新します。

レイアウトがほとんど同じである場合は、ネストされたレイアウトを利用することをお勧めします。1 つのレイアウトを定義するだけapp/views/layouts/application.html.erbで、必要に応じてコントローラーやアクションの小さなセクションを置き換えることができます。

于 2012-09-22T17:48:39.640 に答える
0

あなたは基本的に自分で解決策を提供しています:リストコントローラーの場合、レイアウトファイルはlists.html.erb(複数)ですが、記事コントローラーの場合はarticle.html.erb(単数)

ネーミングは重要です:)

それが役立つことを願っています。

于 2012-09-22T17:28:33.870 に答える