我正在开发一个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
我认为这个解决方案并不好。你知道如何以干净,高效的方式做到这一点吗?
答案 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