Чтобы применить его повсюду, вы можете сделать что-то вроде
$('body').on('click', function() {
if($('.children').is(':visible')) {
$('ul.children').slideUp('slow');
}
});
Уже существует метод в ActiveSupport, который делает это.
['an array', 'of active record', 'objects'].index_by(&:id)
И только для справки, вот реализация:
def index_by
inject({}) do |accum, elem|
accum[yield(elem)] = elem
accum
end
end
, Который, возможно, был пересмотрен в (если Вы отчаянно нуждаетесь в остротах):
def index_by
inject({}) {|hash, elem| hash.merge!(yield(elem) => elem) }
end
Установите Драгоценный камень Фасетов Ruby и используйте их Массив to_h .
Можно добавить to_hash для Выстраивания себя.
class Array
def to_hash(&block)
Hash[*self.map {|e| [block.call(e), e] }.flatten]
end
end
ary = [collection of ActiveRecord objects]
ary.to_hash do |element|
element.id
end