Ruby on rails Rails视图:创建菜单
我遇到了一个奇怪的问题。我正在显示一个视图,人们可以在其中通过不同的范围浏览照片,我的视图中有以下菜单:Ruby on rails Rails视图:创建菜单,ruby-on-rails,css,ruby-on-rails-3,view,menu,Ruby On Rails,Css,Ruby On Rails 3,View,Menu,我遇到了一个奇怪的问题。我正在显示一个视图,人们可以在其中通过不同的范围浏览照片,我的视图中有以下菜单: #photo_browser = link_to 'Recent', browse_photos_path(:view=>'recent'), :class => 'button' = link_to 'Best Photograhy', browse_photos_path(:view=>'best'), :class => 'button'
#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)
#photo_browser
= browse_menu_button( 'Recent', :recent )
= browse_menu_button( 'Best Photography', :best )
= browse_menu_button( 'Most Loved Placed', :loved )
= browse_menu_button( 'Flagged', :flagged ) if user_signed_in? && current_user.has_role?(:admin)
因此,当前选择的视图是url中的一个参数(即,photos/browse?view=recent
)。
现在,我想向当前视图的任何链接添加一个“selected”类。问题是我还没有想出一个好办法来做这件事。我可以做一些像
- @presenter.view == recent? recentClass = 'selected' : recentClass = nil
= link_to 'Recent', browse_photos_path(:view=>'recent'), :class => 'button ' + recentClass
…对于每个链接,但这看起来非常冗长,有点马虎
所以,我的问题是,有没有更好的方法来处理这种情况
那么,创建这些菜单的代码是否最好位于视图文件、助手、演示者模型或其他内容中
谢谢你的帮助 我最终用助手方法解决了这个问题:
def browse_menu_button(name,view)
@presenter.view == view ? btnClass = 'button selected' : btnClass = 'button'
link_to name, browse_photos_path(:view=>view), :class => btnClass
end
那么在我看来,
#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)
#photo_browser
= browse_menu_button( 'Recent', :recent )
= browse_menu_button( 'Best Photography', :best )
= browse_menu_button( 'Most Loved Placed', :loved )
= browse_menu_button( 'Flagged', :flagged ) if user_signed_in? && current_user.has_role?(:admin)
这是我能想到的最有效的方法。以前我用过类似的方法。不确定它是否适用于查询参数,但试一试。