Изменение текущей вкладки в направляющих

Ничто не с такой скоростью, как удар & до н.э :

function fac { seq $1 | paste -sd* | bc; }  
$ fac 42
1405006117752879898543142606244511569936384000000000
$
10
задан 17 November 2009 в 21:17
поделиться

4 ответа

Вы можете использовать controller.class == и controller.action_name == , чтобы точно определить, какой контроллер и действие вы находитесь на

, так что это будет что-то вроде

<li class="<%= controller.class == ProviderController and controller.action_name == 'show' ? 'current' : '' %>"><%= link_to "Home", provider_path(current_user.id), :method=> "GET"%> </li>
<li class="<%= controller.class == StudentController and controller.action_name == 'edit' ? 'current' : '' %>"><%= link_to "Edit Profile", edit_student_path(current_user.id) %> </li>
<li class="<%= controller.class == ProviderController and controller.action_name == 'search' ? 'current' : '' %>"><%= link_to "Search", provider_search_path %> </li>

Я считаю, что есть несколько способов получить текущий URL-адрес страницы, на которой вы находитесь, но тогда ваш «активный» стиль будет зависеть только от того, чтобы перейти к этому действию через этот путь, который не всегда может иметь место в зависимости от маршрутов, таким образом будет гарантировать, что в представлении будет отображаться то, что верно, исходя из того, что было фактически запущено, а не того, какой URL находится в адресной строке

10
ответ дан 3 December 2019 в 17:59
поделиться

Вы можете попробовать что-нибудь вроде:

<li class="<%= controller.controller_path == 'provider' ? 'current' : '' %>"><%= link_to "Home", provider_path(current_user.id), :method=> "GET"%> </li>
<li class="<%= controller.controller_path == 'student' ? 'current' : '' %>"><%= link_to "Edit Profile", edit_student_path(current_user.id) %> </li>
<li class="<%= controller.controller_path == 'search' ? 'current' : '' %>"><%= link_to "Search", provider_search_path %> </li>

... и просто проверьте, с какого контроллера вы идете.

6
ответ дан 3 December 2019 в 17:59
поделиться

Я , поэтому не утверждаю, что это лучший способ сделать это, однако я достаточно храбр, чтобы опубликовать то, что я придумал :)

Пример ссылки меню из моего макета:

<li class="nav-calendar"><%= menu_link_to 'teachers', 'show_date', 'Calendar', calendar_url  %></li>
<li class="nav-announcements"><%= menu_link_to 'announcements', nil, 'Announcements', announcements_path %></li>

Затем я создал этого помощника:

def menu_link_to(*args, &block)
  controller = args.shift
  action = args.shift

  if controller == controller_name && (action.nil? || action == action_name)
    if args.third.nil?
      args.push({:class => 'selected'})
    else
      args.third.merge!({:class => 'selected'})
    end
  end

  link_to *args, &block
end
0
ответ дан 3 December 2019 в 17:59
поделиться

Когда вы переключаете страницы, вы можете передать что-то вроде @current_tab обратно в erb из методов контроллера. Затем используйте @current_tab, чтобы решить, какой li должен быть текущим классом. В качестве альтернативы вы можете присвоить каждому li и id или некоторому уникальному атрибуту и ​​просто изменить класс в соответствии с выбранной структурой JavaScript.

0
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: