Найти совпадение из массива - PullRequest
0 голосов
/ 13 ноября 2010

Я работаю над приложением 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 Ответ

2 голосов
/ 13 ноября 2010

Использовать Enumerable # любой?способ сделать это

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

Как объяснить в комментарии, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...