lavezzi1
@lavezzi1

Как задать класс для определенных страниц?

Здравствуйте. Есть такой код:

В application.html.haml
- if user_signed_in?
			%nav.navigation
				%ul
					%li
						= link_to "New project", new_place_path
					%li
						= link_to "Profile"
					%li
						= link_to "Sign Out", destroy_user_session_path, method: :delete

		- else
			%nav.navigation_welcome
				.inner
					%ul
						%li
							= link_to "Login", new_user_session_path
						%li
							= link_to "Sign up", new_user_registration_path


На главной странице фон менюшки сверху прозрачный и при переходе на страницы типа /login & /sign_up нужно поменять цвет меню. Как вообще лучше это реализовать?
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 2
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
$(function () {
    var url = window.location;
    $('#top-menu a[href="' + url + '"]').parent('li').addClass('current-page');
    $('#top-menu a').filter(function () {
        return this.href == url;
    }).parent('li').addClass('current-page').parent('ul').slideDown().parent().addClass('active');
});


<div id="top-menu">
 <ul class="nav child_menu">
  <li><a href="index.html">Ololo</a></li>
  <li><a href="index2.html">Ololo2</a></li>
 </ul>
</div>


Добавляет класс current-page к пункту меню, href которого совпадает с текущим URL.
domen.com/index2.html
<li class="current-page"><a href="index2.html">Ololo2</a></li>
Ответ написан
premas
@premas
Full-stack web-developer
Можно написать свой хэлпер, можно сделать before_action в вашем HomeController, который будет взводить переменную.
можно и в лоб

nav{ class: "#{'transparent' if params[:controller]!='home'}" }


Можно привязываться не к контроллеру, а к request.url

Самый лучший способ – использовать ангуляр)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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