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