Я столкнулся с какой-то странной проблемой. Я показываю вид, где люди могут просматривать фотографии в разных областях, и у меня есть следующее меню:
#photo_browser
= link_to 'Recent', browse_photos_path(:view=>'recent'), :class => 'button'
= link_to 'Best Photograhy', browse_photos_path(:view=>'best'), :class => 'button'
= link_to 'Most Loved Places', browse_photos_path(:view=>'loved'), :class => 'button'
= link_to 'Flagged', browse_photos_path(:view=>'flagged'), :class => 'button' if user_signed_in? && current_user.has_role?(:admin)
Таким образом, текущий выбранный вид является параметром в URL (т. Е. photos/browse?view=recent
).
Теперь я хотел бы добавить «выбранный» класс к любой ссылке, которая является текущим представлением. Проблема в том, что я не смог придумать хороший способ сделать это. Я мог бы сделать что-то вроде ...
- @presenter.view == recent? recentClass = 'selected' : recentClass = nil
= link_to 'Recent', browse_photos_path(:view=>'recent'), :class => 'button ' + recentClass
... для каждой ссылки, но это кажется очень многословным и неаккуратным.
Итак, мой вопрос: есть ли лучший способ справиться с такой ситуацией?
Тогда лучше ли для того кода, который обрабатывает создание этих меню, жить в файле представления, или в помощнике, или в модели Presenter, или в чем-то еще?
Спасибо за помощь!