Bootstrap устанавливает активную вкладку с запросом.path_parameters

#ruby-on-rails #twitter-bootstrap

#ruby-on-rails #twitter-bootstrap

Вопрос:

У меня есть приложение ruby on rails, которое включает заголовочный файл на каждой странице.

Теперь я хочу установить активные пути.

 <li class="<%= 'active' if current_page?(users_path) %> dropdown">test</li>
  

Это работает без проблем.

Теперь у меня есть страница для создания нового пользователя => users/new . Итак, я попробовал с request.path_parameters

 <% if ((request.path_parameters[:controller] == "users") amp;amp; (request.path_parameters[:action] == "new")) %>
    <li class="active dropdown">test</li> 
<% end %> 
  

Проблема в том, что if-условие выполняется всегда true .
Я могу изменить его на:

 <% if ((request.path_parameters[:controller] == "userstest") amp;amp; (request.path_parameters[:action] == "newtest")) %>
    <li class="active dropdown">test</li> 
<% end %> 
  

и это все еще верно.

Кто-нибудь знает решения для этого?

Когда я пытаюсь:

 current_page?(url_for(:controller => 'users', :action => 'new')) 
  

я получаю No route matches -ошибку

Комментарии:

1. почему вы не можете использовать свой вспомогательный метод и для пользователей / новичков тоже? что-то вроде: <li class="<%= 'active' if current_page?(your_path_for_new_action) %> dropdown">test</li> . Ваши пути не могут быть одинаковыми, и я не думаю, что вам потребуется ваш метод post, такой как create или destroy с помощью метода delete

Ответ №1:

Используйте == вместо =

<% if ((request.path_parameters[:controller] == "users") amp;amp; (request.path_parameters[:action] == "new")) %>
<li class="active dropdown">test</li>
<% end %>

Также доступны вспомогательные методы для получения контроллера и действия.

controller_name и action_name

Комментарии:

1. Спасибо за этот вопрос. Спасибо! Моя ошибка. Слишком долго сижу перед этим кодом.