回答:
ヘルパーを作成できます:
def content_defined?(var)
content_var_name="@content_for_#{var}"
!instance_variable_get(content_var_name).nil?
end
そしてこれをあなたのレイアウトで使用してください:
<% if content_defined?(:an__area) %>
<h1>An area is defined: <%= yield :an__area %></h1>
<% end %>
さて、誰も答えていないので恥知らずに自己返信をします。私はすでに答えを見つけました:)これをapplication_helper.rbまたは便利な場所でヘルパーメソッドとして定義します。
def content_defined?(symbol)
content_var_name="@content_for_" +
if symbol.kind_of? Symbol
symbol.to_s
elsif symbol.kind_of? String
symbol
else
raise "Parameter symbol must be string or symbol"
end
!instance_variable_get(content_var_name).nil?
end
instance_variable_defined?(content_var_name)
は、それがnilであるかどうかをテストするのではなく、少しきれいです。2番目に大きなポイントは、content_forインスタンス変数が非推奨になり、ソリューションが将来の証拠にならない