contet_tag :ul question

Hi all

This isn't doing what I expect it to. Can you give it a quick look-see
if you have a moment?

  def user_navigation_helper
    content_tag(:div, :class =>"banner_right") do
      content_tag(:ul, :class => "wat-cf") do
        if current_user()
          content_tag(:li) { current_user.email }
          content_tag(:li) { link_to("Edit profile",
edit_user_path(:current)) }
          content_tag(:li) { link_to("Logout", logout_path) }
        else
          content_tag(:li) { link_to("Login", login_path) }
          content_tag(:li) { link_to("Register", new_user_path) }
        end
      end
    end
  end

I am getting just one of the two or thee <li> items. Is there a
better/cleaner/correct way of doing this? Thanks!

Pito

When used in this context, content_tag returns a string with
corresponding fragment of html. Your innermost calls to content_tag
aren't doing anything with that result whereas you probably want to be
concatenating them.

Fred

one way:

def user_navigation_helper
   content_tag(:div, :class =>"banner_right") do
     content_tag(:ul, :class => "wat-cf") do
       if current_user()
         [content_tag(:li) { current_user.email },
         content_tag(:li) { link_to("Edit profile",
edit_user_path(:current)) },
         content_tag(:li) { link_to("Logout", logout_path) }]].join
       else
         [content_tag(:li) { link_to("Login", login_path) },
         content_tag(:li) { link_to("Register", new_user_path) }].join
       end
     end
   end
end

Thanks both!! So the code snippet below now works correctly.... Is there
a more typical way of doing what I am doing or would you consider this
idiomatic rails?

-- PIto

def user_navigation_helper
    content_tag(:div, :class =>"banner_right") do
      content_tag(:ul, :class => "wat-cf") do
        if current_user()
          content_tag(:li) { current_user.email } +
          content_tag(:li) { link_to("Edit profile",
edit_user_path(:current)) } +
          content_tag(:li) { link_to("Logout", logout_path) }
        else
          content_tag(:li) { link_to("Login", login_path) } +
          content_tag(:li) { link_to("Register", new_user_path) }
        end
      end
    end
  end