2010-11-13 94 views
0

我工作的Rails應用程序在那裏我有一個可以加對方爲好友的用戶匹配。 現在我想顯示在用戶已經是另一個用戶的好友的某些信息。我以下列方式完成了這項工作:查找陣列

- @users.each do |user| 


- exists = false 
    - current_user.friends.each do |friend| 
    - if friend == user 
    - exists = true 

    - if !exists 
    = button_to 'Add Friend', friendships_path(:friend_id => user), :method => :post 
    - else 
    Already a friend 

我覺得這個解決方案不好。你知道我怎樣才能以乾淨和高效的方式做到這一點?

回答

2

使用可枚舉#否?方法來做到這一點

- @users.each do |user| 
    - if current_user.friends.any?{ |friend| friend == user } 
    Already a friend 
    - else 
    = button_to 'Add Friend', friendships_path(:friend_id => user), :method => :post 

像在Comment中解釋,Enumerable#include?也工作在這種情況下

- @users.each do |user| 
    - if current_user.friends.include?(user) 
    Already a friend 
    - else 
    = button_to 'Add Friend', friendships_path(:friend_id => user), :method => :post 
+0

謝謝!很棒。一個小的評論;應該切換if/else內容。 – 2010-11-13 12:23:58

+1

更簡單:'current_user.friends.include? user' – 2010-11-13 14:41:35