2012-07-04 2 views
0

Я использую API Facebook, чтобы вытащить список всех моих друзей. Однако я не хочу сохранять результаты в базе данных. Я просто хочу взять хэш результатов, чтобы вернуться и выполнить выбор по результатам.Результаты поиска для похожих совпадений rails 3

Однако, я с трудом делает это ...

Я получаю результаты, как это ...

[{"name"=>"John Smith", "id"=>"12345"}, {"name"=>"Jane Doe", "id"=>"23456"}, {"name"=>"Samuel Jackson", "id"=>"34567"}, {"name"=>"Kate Upton", "id"=>"45678"}] 

Они хранятся в @friends

Мой выбор является:

@friends.select{|key, hash| hash["name"] == "John Smith" } 

, но я получаю ошибку "неопределенный метод` []»для ноль: NilClass"

2 вопроса: 1. Как я могу получить поиск хэша, чтобы вернуть Джона Смита (без сохранения в базе данных и без изменения исходного запроса API Facebook) 2. Можно ли использовать «Мне нравится», а не «==», чтобы он возвращал результаты, содержащие слово?

Спасибо!

ответ

1

Вы получаете "undefined method [] for nil:NilClass", так как вы используете метод select неправильно. Попробуйте сделать это:

@friends.select{ |hash| hash["name"] == "John Smith" } 

Поэтому я считаю, что это отвечает на ваш первый вопрос. Вам не нужно хранить что-либо в базе данных, но в переменной экземпляра @friends и использовать правильный выбор.

Что касается второго вопроса, то я считаю, вы должны смотреть в регулярные выражения, так как это зависит от того, что вы имеете в виду под «как», но если вы говорите, что вы хотите:

возвращает результаты, содержащие слово?

Ну, если вы хотите, чтобы проверить определенное слово (скажем Смита), вы могли бы сделать выбор, как:

@friends.select{ |hash| hash["name"].include? "Smith" } 

Который даст вам все элементы на массив, который имя содержит слово Smith.

+0

awesome. кто это сделал. Спасибо! – user749798

Смежные вопросы