このスクリーンキャストを見て、ビューでページ タイトルを追加しましたが、ボディ タグにクラスを追加して同じことを行う方法はありますか?
11186 次
6 に答える
42
あなたが何を意味するのかわからない、あなたは同じ方法でそれを行うことができます:
ビューで:
<% content_for :body_class, "my_class" %>
レイアウト ファイル内:
<body class="<%= yield (:body_class) %>">
于 2012-12-21T19:29:04.423 に答える
1
レイアウト ページ:
<% if content_for?(:body_class) %>
<body class="<%= content_for(:body_class) %>" >
<% else %>
<body>
<% end %>
コンテンツ ページ:
<% content_for :body_class do 'my-body-class' end %>
于 2016-08-01T09:40:38.683 に答える
0
私は自分のアプリで受け入れられたメソッドをしばらく使用してきましたが、クラスがないと body タグに class=' ' があり、コードが散らかってしまうため、その動作が気に入らなかったのです。私の現在のユースケースでは、ワイドスクリーンクラスが欲しかっただけです(ただし、ユースケースごとに異なるクラスを使用すると、より高度になることが簡単にできます)。私はこのアプローチに満足しています:
アプリケーションヘルパーで:
def body_tag(&block)
content = capture(&block)
content_tag(:body, content, class: @widescreen ? "widescreen" : nil)
end
application.html.erb 内
<%= body_tag do %>
<%# the rest of your content here %>
<% end %>
次に、アプリケーション コントローラーで次のようにします。
private
def enable_widescreen
@widescreen = true
end
次に、必要なコントローラーで、次のようにします。
before_action :enable_widescreen
次に、「ワイドスクリーン」以外のさまざまなクラスに使用する場合は、クラスロジックを自由に高度にしてください。ただし、ポイントは、指定しない場合にクラスが存在しないようにするエレガントな方法です。 、 それなし
<body class>
あなたのhtmlに現れます。
于 2016-11-17T11:13:35.937 に答える