Je ne sais pas si je vais vous donner une façon intelligente, mais mieux quelque chose que rien ...
Si votre menu a des liens - ce n'est pas dans votre exemple mais je suppose que le menu réel devrait avoir des liens, pas seulement les éléments. Par exemple quelque chose comme ça dans HAML: (J'utilise HAML comme l'écriture ERB dans la zone de texte est l'enfer pur)
%ul
%li= link_to "Home", :controller => "home"
%li= link_to "Books", :controller => "books"
%li= link_to "Pages", :controller => "pages"
Ensuite cette aide (collé de mon projet) devrait venir à portée de main:
#
# Shows link with style "current" in case when the target controller is same as
# current
# beware: this helper has some limitation - it only accepts hash as URL parameter
#
def menu_link_to(title, url, html_options = {})
unless url.is_a?(Hash) and url[:controller]
raise "URL parameter has to be Hash and :controller has to be specified"
end
if url[:controller] == controller.controller_path
html_options[:class] = "current"
end
link_to(title, url, html_options)
end
Avec cette aide, vous pouvez remplacer votre "link_to" dans le code ci-dessus par "menu_link_to" et c'est tout!