Поиск в Ruby on Rails 2 в хэше - PullRequest
1 голос
/ 26 мая 2011

Мне нужна помощь с этим ...

У меня есть такой хэш:

@ingredients = Hash.new
@ingredients[1] = "Biscottes Mini(recondo)"
@ingredients[2] = "Abadejo"
@ingredients[3] = "Acelga"
@ingredients[4] = "Agua de Coco"
@ingredients[5] = "Ajo"
@ingredients[6] = "Almidón de Arroz"
@ingredients[7] = "Anillos Con Avena Integral cheerios (nestle)"
@ingredients[8] = "Apio"

Мне нужно найти этот хэш, чтобы найти «Biscottes Mini (recondo)», когда я пишу «scotte»

Некоторая помощь?

Thk!

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Почему вы используете хэш здесь, а не массив? Вы, кажется, не используете другие ключи, кроме целых чисел.

В любом случае, это решение работает как с массивом, так и с хэшами:

search_term = 'scotte'
# you could also use find_all instead of select
search_results = @ingredients.select { |key, val| val.include?(search_term) } 
puts search_results.inspect

См. http://ruby -doc.org / core / classes / Enumerable.html # M001488

1 голос
/ 26 мая 2011

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

search_value = "scotte"
@ingredients.select { |key, value| value.include? search_value }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...