Нечто похожее на этот код C # в Ruby on Rails - PullRequest
3 голосов
/ 08 июня 2010

Я пытаюсь получить коллекцию объектов в зависимости от условий. Теперь обычно в C # я бы сделал что-то вроде этого

employeesCollection.Where(emp => emp.Name == "john");

как я могу сделать нечто подобное в Ruby on Rails (я пытаюсь сопоставить коллекцию объектов с выбором, но я хочу отобразить только некоторые объекты, которые соответствуют условию.

Мой текущий код ruby ​​on rails выглядит следующим образом

<%= select( 'page', 'id', @post.pages.map {|page| [page.title, page.id]}) %>

Я хочу добавить условие к атрибуту страницы

Может кто-нибудь помочь?

1 Ответ

5 голосов
/ 08 июня 2010

Вы можете просто добавить туда блок select до map:

>> [1,2,3,4,5].select { |x| x.odd? }.map{ |x| x*x }
=> [1, 9, 25]

Синоним для выбора: find_all.

Как вы, наверное, догадались, select в Ruby примерно эквивалентен LINQ Where. Выбор занимает блок, и каждый элемент в вашем Enumerable передается этому блоку; когда блок возвращает истину (не ложь, не ноль), тогда этот элемент select ed.

Антоним для select: reject. reject предпочтительнее, когда ваш выбор отрицателен, то есть

ary.select {|x| x != 'foo'}

является менее предпочтительным, чем

ary.reject {|x| x == 'foo'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...