3
#layouts/application.html.haml
    %title
     = yield(:title) || "Default page title"
     = " | DefaultSite.com"


#application_helper.rb
 def title(page_title)
    content_for(:title) { page_title }
  end

titleページに (ヘルパー メソッド) を設定しなくても、表示され"Default page title"ません。代わりに、なぜか""( の値) が表示されます。yield(:title)

なぜこうなった?

4

1 に答える 1

3

これは、Railsの設計の一部にすぎません。この動作を変更することはできません。

代わりに、yield(:title).emptyかどうかを確認する必要がありますか?content_for(:title)が呼び出されたかどうかを確認するには、trueまたはfalseです。

たとえば、次の代わりに:

yield(:title) || "Default page title"

あなたが欲しい:

(yield(:title).empty? ? "Default page title" : yield(:title))

これは、空かどうかをチェックし、空の場合はデフォルトを適用するか、そうでない場合はタイトルを使用します。

于 2012-09-02T04:04:31.887 に答える