Answers:
可以创建一个助手:
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 %>
好的,我将无耻地做一个自我答复,因为没有人回答,而且我已经找到答案了。
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)
是,比测试是否为零更整洁。第二个要点是,不建议使用content_for实例变量,因此您的解决方案不再适用于未来