2010-06-08 42 views
2

我想根據條件獲取對象的集合。現在,在C#通常我會做這樣的事情類似於Ruby on Rails中的C#代碼

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

我可怎麼辦在Ruby中類似on Rails的(我試圖對象的集合映射到一個選擇,但我只想要映射匹配的特定對象一個條件。

我在Rails代碼當前紅寶石看起來像這樣

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

我想一個條件添加到頁面

任何人都可以的屬性幫幫我?

回答

5

你可以隨便扔一個select塊有map前:

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

的代名詞選擇是find_all

正如您可能猜到的,Ruby中的select大約相當於LINQ的Where。選擇需要一個塊,並且將Enumerable中的每個元素傳遞給該塊;當該塊返回真(非假,非零)時,那麼該元素是select ed。

select的反義詞是rejectreject是首選,當你選擇是否定的:也就是說,

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

是不太可取比

ary.reject {|x| x == 'foo'} 
+0

你是人中的神,巨大的答案。謝謝! – Jimmy 2010-06-08 02:41:49