仅当该用户是朋友时才查看“添加朋友”

时间:2015-02-12 23:39:10

标签: ruby-on-rails model-view-controller scope

我想仅在用户是朋友时查看method: :post。现在我的观点看起来像是

<% if current_user.friends  %>

        <% else %>
        <%= link_to 'add friend' , friendships_path(:friend_id => user), method: :post, class: "add-friend" %>
        <% end %>

但是当我这样做时,没有任何东西被渲染。

如果我把它放在<% if %><% else %>语句之间,那么它会显示所有用户的添加好友。

我的用户模型是:

has_many :active_friends, -> { where(friendships: { approved: true}) }, :through => :friendships, :source => :friend, dependent: :destroy
         has_many :passive_friends, -> { where(friendships: { approved: true}) }, :through => :passive_friendships, :source => :user, dependent: :destroy
         has_many :pending_friends, -> { where(friendships: { approved: false}) }, :through => :friendships, :source => :friend, dependent: :destroy
         has_many :requested_friendships, -> { where(friendships: { approved: false}) }, :through => :passive_friendships, :source => :user, dependent: :destroy

def friends
           active_friends | passive_friends 
         end

重申一下,如何设置视图以仅在不是朋友时显示post方法?

2 个答案:

答案 0 :(得分:0)

因此,对于没有主动或被动朋友的人,friends方法会返回[],红宝石中[]true,因此if会永远是真的。

答案 1 :(得分:0)

请尝试将此作为您的条件:<%= if current_user.friends.present? %>