4

テンプレートのcontent_forタグにコンテンツが提供されているかどうかを検出したいのですが、提供されていない場合はデフォルト値にフォールバックします。

<title>
  <% if content_is_provided -%>
    <%= yield :title -%>
  <% else -%>
    404 - Page Unknown
  <% end -%>
</title>

これを検出する簡単な方法はありますか?試し<% if :title -%>ましたが、あまり効果がありませんでした。ありがとう。

4

5 に答える 5

3

コードをさらに合理化できます。

def content_exists?(name)
  return instance_variable_get("@content_for_#{name}")
end
于 2010-04-25T10:01:29.143 に答える
2

古い Rails 2.1.1 では、

<%= (yield :title) || default_title %>

私のために働いています。

于 2011-12-13T15:57:00.563 に答える
2

これを試して:

<title>
  <%= yield :title || "404 - Page Unknown" -%>
</title>
于 2010-04-25T08:37:22.433 に答える
1

もう一つの方法

'common/top_status') %>
于 2010-04-25T21:23:18.793 に答える
1

content_for コードを少し掘り下げた後、ヘルパー メソッドを作成することで有効な解決策を見つけました。

def content_exists?(name)
  return true if instance_variable_get("@content_for_#{name}")
  return false # I like to be explicit :)
end

そしてビューで:

<% if content_exists?(:title)-%>
  <%= yield :title %>
<% else -%>
  404 - Page Unknown
<% end -%>

今のところ、これは機能しているようです (Rails 2.3.5)。

于 2010-04-25T08:46:28.440 に答える