Как выделить строки в списке на основе условия - PullRequest
0 голосов
/ 25 октября 2010

версия 2.3.4

Допустим, у меня есть таблица items с некоторыми полями, например: id, name, something, created_at, updated_at, is_dirty. Я использую активный скаффолд для отображения из него HTML-таблицы.

class ItemsController < ApplicationController
  layout 'application'
  active_scaffold :item do |c|
    c.columns = [ :id, :name, :something ]
    c.show.columns.add [ :is_dirty, :created_at, :updated_at]
    c.list.per_page = 20
    list.sorting = {:created_at => 'DESC'}
  end
  # ...
end

У меня есть функция импорта, управляемая другим контроллером. После импорта поле is_dirty затронутых строк станет true, значение is_dirty для другого файла останется таким же, как и раньше.

В списке элементов, которые я хотел бы , выделите несколько строк , используя раздражающий цвет (например, желтый или розовый), чье поле is_dirty равно true. Я искал по всей сети, и я нашел только переопределения полей. Я не заинтересован в решениях на основе RJS из-за нелепых накладных расходов по сравнению с задачей, которую предстоит выполнить.

Любые подсказки приветствуются и приветствуются, но я предпочту ответы, которые не основывают решение на копировании и изменении файлов фреймворка (но они все еще меня интересуют). Например, иметь хорошие имена переопределения / элементы конфигурации было бы отлично.

1 Ответ

2 голосов
/ 25 октября 2010

Можете ли вы добавить класс css в строки при возникновении события? Этот импорт выполняется через вызов AJAX или это происходит до загрузки DOM? Если он запускается до загрузки DOM, я лично добавлю jQuery в какой-нибудь включенный js-файл:

$(document).ready(function() { 
    $('tr').filter(function() { 
        return $(this).attr('is_dirty'); 
    }).addClass('ugly_yellow'); 
}); 

Если импорт выполняется через вызов AJAX, вы можете добавить аналогичный код в обработчик.

Если вы не используете jQuery, я уверен, что вы можете сделать что-то подобное в Prototype, но я предпочитаю jQuery и предлагаю всем хотя бы попробовать это:)

...