从数组中查找匹配项

时间:2010-11-13 11:11:59

标签: ruby-on-rails ruby arrays

我正在开发一个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

我认为这个解决方案并不好。你知道如何以干净,高效的方式做到这一点吗?

1 个答案:

答案 0 :(得分:2)

使用Enumerable#any?这样做的方法

- @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

在评论中解释一下,可枚举#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