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

  • items. Is there a
    better/cleaner/correct way of doing this? Thanks!

    Pito

  • On Apr 16, 8:26 pm, Pito S. [email protected] wrote:

    I am getting just one of the two or thee

  • items. Is there a
    better/cleaner/correct way of doing this? Thanks!

  • 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

    On Fri, Apr 16, 2010 at 3:26 PM, Pito S. [email protected]
    wrote:

         content_tag(:li) { link_to("Edit profile",
    

    I am getting just one of the two or thee

  • items. Is there a
    better/cleaner/correct way of doing this? Thanks!

  • 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


    Rick DeNatale

    Blog: http://talklikeaduck.denhaven2.com/
    Github: rubyredrick (Rick DeNatale) · GitHub
    Twitter: @RickDeNatale
    WWR: http://www.workingwithrails.com/person/9021-rick-denatale
    LinkedIn: http://www.linkedin.com/in/rickdenatale

    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