Представьте, что у вас есть два контроллера RESTful (UsersController, OffersController) и PagesController (используется для статического контента, такого как индекс, около и т. Д.) В вашем приложении.Нужна помощь: Структура представлений 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
быть видимыми в любое время , Все остальные подменю могут быть полностью пропущены (вообще не нужно отображать).
Возьмите меню администратора, например: Это меню должно быть активным для всех путей RESTful в приложении, за исключением offers_path
. Активный означает, что подменю видно.
Единственное решение, которое я могу придумать для достижения этого, - это построить много сложнее, если условия и что отстой (очень сложно писать и поддерживать). Я ищу элегантное решение?
Я надеюсь, что кто-то поймет мой вопрос - если есть что-то непонятное, просто прокомментируйте вопрос, и я расскажу подробнее.
Спасибо за ваши мысли. Однако перемещение проблемы в помощник не является реальным решением. С другой стороны, это действительно усовершенствование, и я не ожидал найти изящное решение в ближайшее время. Может быть, у кого-то есть лучший трюк ... – 2008-09-24 12:43:37