Я хочу спросить вас о лучшем способе создания меню.
Я должен сделать горизонтальное меню. Каждая страница принадлежит определенному пункту этого меню, и этот элемент должен иметь id = "current", когда пользователь открывает эту страницу.
<ul>
<li id="current">Home</li>
<li>About us</li>
</ul>
Как я понимаю, мне следует создать специальный помощник, который будет создавать эту HTML-разметку и использовать этот помощник со специальным параметром при каждом просмотре каждой страницы. Может быть, есть лучший способ сделать это с помощью рельсов?
PS. Обновление
Мое решение:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :open_most_important
protected
def open_most_important
@menu = {
:cases => { :name => 'Cases', :link => '/cases'},
:groups => { :name => 'Groups', :link => '/groups' },
:projects => { :name => 'Projects', :link => '/projects' },
:settings => { :name => 'Settings', :link => '/settings' },
:about => { :name => 'About us', :link => '/about' }}
@current_menu_item = :cases
end
Фрагмент макета application.html.erb
:
<div id="menu">
<ul>
<% @menu.each do |item, value| -%>
<% if @current_menu_item == item -%>
<li id="current"><a href="<%= value[:link] %>"><%= value[:name] %></a></li>
<% else -%>
<li><a href="<%= value[:link] %>"><%= value[:name] %></a></li>
<% end -%>
<% end -%>
</ul>
</div>
После того, как мне нужно установить @current_menu_item
для каждого контроллера в before_filter