Help needed to DRY helpers and proper MVC with Ruby

Hello.

I've got working code, but I don't think that it's done properly so any
help to make this more efficient and most of all, correct, would be so
very appreciated.

In my users_helper.rb file

def generate_sub_nav
   if session[:user]
      sub_nav_menu = []
  user = User.find(session[:user])
        for role in user.roles
          for right in role.rights
            if right.on_menu
      sub_nav_menu << right.id
            end
        end # for right
      end # for role
    end # if
     sub_nav_menu.sort!
  end # def

In my application_helper.rb file for the layout and display

def show_sub_nav(rights)
  html_out = '<table><tr><td>'

  for right in rights
    right_array = Right.find(:all, :conditions => ["id = ?", right])
    for menu in right_array
      html_out << link_to_unless_current (menu.name,
:controller => menu.controller, :action => menu.action)
    end
  end #for right in rights

  html_out << '</td></tr></table>'
  html_out
end

In my controllers (not including the user_controller)

helper :users

There's got to be a better, more Ruby like way to do this.

THANKS!

···

--
Posted via http://www.ruby-forum.com/.

I've got working code, but I don't think that it's done
properly so any help to make this more efficient and most of
all, correct, would be so very appreciated.

Your question is perhaps best asked on the rails list. There are a
couple of different things you could do to make your ActiveRecord usage
more efficient, but this isn't the forum for that.

http://lists.rubyonrails.org/mailman/listinfo/rails

As far as making this code more rubyish, most rubyists seem to prefer
iterators with blocks, e.g.:

user.roles.each do |role|
  role.rights.each do |right|
    ...
  end
end

to for loops.

- donald