Rails и jQuery: удалить класс после клика - PullRequest
0 голосов
/ 14 июня 2011

Я вижу форму, эта форма имеет:

<%= link_to day, root_path(:day => day), :id => 'link', :class => 'active_link' %>

Эта ссылка переопределяет эту форму с параметром дня, а элементы в этой форме отображаются с этим параметром. Я хочу, чтобы после нажатия на эту ссылку, после повторного рендеринга формы - класс 'active_link' убрал. Как я могу это сделать?

P.S: это ссылка на элемент (дневной элемент из коллекции).

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Это проблема логики представления, а не проблема JavaScript / jQuery. Вы используете обычную ссылку для изменения параметра дня и повторного рендеринга всей страницы. Основываясь на единственной строке кода, которую вы нам показываете, я предполагаю, что ваше представление перебирает кучу дат и выводит ссылку для каждой из них. Проблема в том, что вы присваиваете класс active_link всем дневным ссылкам в вашем представлении. «Исправление» этой проблемы с помощью jQuery в браузере после загрузки страницы - неправильный подход; вместо этого исправьте свою логику просмотра, чтобы назначить класс active_link только одной правильной ссылке (и исключить неуникальные идентификаторы 'link').

В вашем контроллере:

@active_day = params[:day]

На ваш взгляд:

<% days.each do |day| %>
  <%= link_to day, root_path(:day => day), :class => (day == @active_day ? 'active_link' : '') %>
<% end %>

Очевидно, что вам придется немного подправить этот код, чтобы он работал в вашем приложении - вы не показали достаточно кода, чтобы я мог написать работающее решение для кода.

0 голосов
/ 14 июня 2011

Вы можете сделать:

$('a.active_link').click(function(){
      $(this).removeClass('active_link');
});

Я не эксперт по ruby, но это работает, если ваша ссылка отображается как

<a id='link' class='active_link'></a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...