Я пытаюсь очистить свой взгляд, перемещая метод дезинфекции Rails к помощнику, но он не дает желаемого результата.Ниже показано, как выглядит мое действие индекса.Я знаю, что это уродливо и не очень ООП, но я упростил его, чтобы я мог следить за тем, что происходило при отладке.
Я пытаюсь перебрать все атрибуты источников, запустить дезинфицирующее средство для любого атрибута, который является непустой строкой, заменить исходные строки очищенными строками (transform_values!) И записать поверх оригинала@sources (карта!).
Я пытался сохранить их в переменных, отличных от @sources
, и использовать .each
вместо .map!
, но очищенные значения не позволяют.
def index
@sources = Source.all
@sources.map! { |source|
source.attributes.transform_values! { |attr|
attr.blank? || !attr.is_a?(String) ? attr
: ActionController::Base.helpers.sanitize(attr) } }
end
Однако, после изучения моего списка источников в представлении, он удаляет экземпляры источников и вместо этого возвращает необъявленный массив хэшей.Я могу просмотреть их, но не могу назвать определенные атрибуты, такие как source.author
, что не очень хорошо.
Вот несколько изображений для справки.Первый - это то, как он должен выглядеть, а второй - то, что я сейчас получаю
Незанизированные источники
Санитарные источники