我想仅在用户是朋友时查看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方法?
答案 0 :(得分:0)
因此,对于没有主动或被动朋友的人,friends
方法会返回[]
,红宝石中[]
为true
,因此if
会永远是真的。
答案 1 :(得分:0)
请尝试将此作为您的条件:<%= if current_user.friends.present? %>