想象一下,在您的應用程序中有兩個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