Назначить активный класс на основе текущей страницы

#ruby-on-rails #ruby #ruby-on-rails-4

#ruby-on-rails #ruby #ruby-on-rails-4

Вопрос:

Я хочу назначить active класс моему ученику, если он находится на странице ученика.

 <p><%= link_to student.name, student_url(student.student_id), 
      class: ('active' if current_page? ) %></p>
  

Ниже приведен мой URL, по которому я перемещаюсь.

 https://localhost:3000/student/19
  

Как бы я использовал Rails helper current_page? для достижения этого.

Ответ №1:

Текущая страница? методу необходимо передать параметры в метод. Например:

 <p><%= link_to student.name, student_url(student.student_id), 
  class: ('active' if current_page?(student_path(student.student_id)) ) %></p>
  

student_path(student.student_id) должен возвращать /student/19, в то время как current_page?(student_path(student.student_id)) должен возвращать true.

Я не уверен, что структура вашего if будет работать. Иногда я просто тернарный для таких ситуаций:

 <p><%= link_to student.name, student_url(student.student_id), 
  class: (current_page?(student_path(student.student_id)) ? 'active' : '' ) %></p>
  

Вы можете уловить идею. Надеюсь, это укажет вам правильное направление.

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

1. Я использую student_url и, похоже, это не работает. должны ли мы использовать student_path или мы также можем использовать student_url в current_page helper.

2. student_path просто отобразит «/student/19″ вместо » localhost:3000/student/19 «. api.rubyonrails.org/classes/ActionView/Helpers /… <— какая-нибудь документация о current_page? метод.