想象一下,在您的应用程序中有两个RESTful控制器(UsersController,OffersController)和一个PagesController(用于静态内容,如索引,about等等)。需要建议:子菜单的Rails视图结构?
您有以下途径定义:
map.with_options :controller => 'pages' do |pages|
pages.root :action => 'index' # static home page
pages.about :action => 'about' # static about page
# maybe more static pages...
end
map.resources :users # RESTful UsersController
map.resources :posts # RESTful PostsController
你的应用程序布局如下:
<html>
<head>
<title>Demo Application</title>
</head>
<body>
<ul id="menu">
<li>
<%= link_to 'Home', root_path %>
</li>
<li>
<%= link_to 'Offers', offers_path %>
<ul id="submenu>
<li><%= link_to 'Search', 'path/to/search' %></li>
<li>maybe more links...</li>
</ul>
</li>
<li>
<%= link_to 'About', about_path %>
</li>
<li>
<%= link_to 'Admin', users_path %>
<ul id="submenu">
<li><%= link_to 'New User', new_user_path %></li>
<li><%= link_to 'New Offer', new_offer_path %></li>
<li>maybe more links</li>
</ul>
</li>
</li>
<%= yield %>
</body>
</html>
与布局的问题是,我想只有一个#submenu
是随时可见。所有其他子菜单可以完全跳过(根本不需要渲染)。
以管理菜单为例:除了offers_path
之外,该菜单应该对应用程序中的所有RESTful路径有效。活动意味着子菜单可见。
我能想到的唯一解决方案就是在条件和情况很糟糕的情况下构建复杂的系统(编写和维护起来非常复杂)。我正在寻找一个优雅的解决方案?
我希望有人能够理解我的问题 - 如果有什么不清楚的地方,只要评论一下这个问题,我会更详细地解释它。
感谢您的想法。但是,将问题转移给帮手并不是真正的解决方案。另一方面,这确实是一个增强,我不希望在任何时候很快找到一个优雅的解决方案。也许别人有更好的把戏...... – 2008-09-24 12:43:37