Trouble with titleize

In one of my views I have this code:

  <%=content_tag :h2, :header do-%>     <%=yield(:page_title).html_safe?-%>     <%=yield(:page_title).titleize-%>   <%- end -%>

Which displays:

true A Boy &Amp; His Dog

However this code:

  <%=content_tag :h2, :header do-%>     <%=yield(:page_title).html_safe?-%>     <%=yield(:page_title).capitalize-%>   <%- end -%>

displays:

true A boy & his dog

Is this behaviour of titleize intentional? I want to titleize 'a dog & his boy' and preserve the & character in the final display.

In one of my views I have this code:

<%=content_tag :h2, :header do-%>    <%=yield(:page_title).html_safe?-%>    <%=yield(:page_title).titleize-%> <%- end -%>

What exactly does yield(:page_title) return before you titleize it?

Fred

Frederick Cheung wrote in post #986019:

In one of my views I have this code:

<%=content_tag :h2, :header do-%>    <%=yield(:page_title).html_safe?-%>    <%=yield(:page_title).titleize-%> <%- end -%>

What exactly does yield(:page_title) return before you titleize it?

Fred

  <%-content_for :page_title,      "a boy & his dog"   -%>

<div class="welcome" id="welcome_show_page">

  <%=content_tag :h2, :header do-%>     <%=yield(:page_title)-%>   <%- end -%>

displays:

a boy & his dog

Frederick Cheung wrote in post #986019:

In one of my views I have this code:

<%=content_tag :h2, :header do-%>   <%=yield(:page_title).html_safe?-%>   <%=yield(:page_title).titleize-%> <%- end -%>

What exactly does yield(:page_title) return before you titleize it?

Fred

<%-content_for :page_title,     "a boy & his dog" -%>

So the issue would seem to be that content_for is escaping the & (turning it into &amp), and then titleize, not knowing any better uppercases the &amp to &Amp. Character entities are case sensitive so this screws things up. Why not call titleize in the content_for block?

Frederick Cheung wrote in post #986030:

So the issue would seem to be that content_for is escaping the & (turning it into &amp), and then titleize, not knowing any better uppercases the &amp to &Amp. Character entities are case sensitive so this screws things up. Why not call titleize in the content_for block?

Thank you Fred. Yes, that works. I did not think to do that because our practice is to apply styling methods at the moment of display. On this page I can change that without difficulty but on others, as the text is sometimes used in multiple places on a page, I may not be so fortunate as in this example.