Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails视图:创建菜单_Ruby On Rails_Css_Ruby On Rails 3_View_Menu - Fatal编程技术网

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)

这是我能想到的最有效的方法。

以前我用过类似的方法。不确定它是否适用于查询参数,但试一试。