Determining whether yields have content


#1

Hey All,
I would like some logic that would help me determine whether a yield
has
any content to it. For example:

<%= yield :submenu %>

I only want to display the div around the yield if the yield will have
content.

Any ideas?

Thanks,
Jim


#2

Just confirming, its expensive since it renders the yield twice,
correct?
What if i did something like:

<% yield_contents = yield(:submenu)
if !yield_contents.strip.blank? -%>

<%= yield_contents %>
<% end -%>

Would that work?

I guess I never realized that I could yield twice. Thanks for the tip.
Much
appreciated.


#3

On Jan 4, 2009, at 7:18 PM, James E. wrote:

Any ideas?

You can do:

<% if !yield(:submenu).strip.blank? -%>

<%= yield :submenu %>
<% end -%>

The call may be expensive so you might want to create some other
method of determining whether the submenu is likely to have content.
But this should work.

HTH


#4

On Jan 4, 2009, at 8:47 PM, James E. wrote:

Just confirming, its expensive since it renders the yield twice,
correct? What if i did something like:

<% yield_contents = yield(:submenu)
if !yield_contents.strip.blank? -%>

<%= yield_contents %>
<% end -%>

That should work. A different solution altogether would be to have the
submenu contain the div wrapper so you can make the test there and
eliminate all the gnarly logic in your layout.