1

私はRubyonRailsチュートリアルをフォローしていますが、ユーザービューで、<% provide(:title, 'Sign up') %>それが正確に何をしているのか疑問に思っています。

4

1 に答える 1

3

これはあなたの質問に答えるはずです:

content_for?

#content_for を使用して、まだコンテンツがキャプチャされているかどうかを確認するだけです

ビューの内容に基づいて、レイアウトの一部を異なる方法でレンダリングするのに役立ちます。

#content_for :right_column がない場合、レイアウトで異なる css を使用する可能性があります。

<%# This is the layout %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
 <title>My Website</title>
 <%= yield :script %>
</head>
<body class="<%= content_for?(:right_col) ? 'one-column' : 'two-column' %>">
 <%= yield %>
 <%= yield :right_col %>

provide(name, content = nil, &block)

content_for と同じですが、ストリーミング フラッシュで使用すると、レイアウトに直接戻ります。つまり、特定のテンプレートをレンダリングするときに同じバッファーに複数回連結したい場合は content_for を使用する必要があります。

簡単な回答: Ruby on Rails チュートリアルでは、特別な rails 関数 provide を使用して、各ページに異なるタイトルを設定しています。あなたがどの static_page にいるかに応じて、タイトルがそれに応じて設定されます。さらに詳しい説明は、Ruby on Rails チュートリアル ブックの 3.3.3 ("Embedded Ruby") にあります。

于 2013-02-06T20:32:33.047 に答える