我正在尝试完成论坛申请。我想安排用户友谊。我使用devise作为身份验证系统。我想要一些建议。 我应该在用户和友谊中嵌套资源。这是Railscasts使用的方式:
devise_for :users
resources :users, only: [:index, :show]
resources :friendships, only: [:create, :destroy]
这就是我使用的方式:
devise_for :users
resources :users, only: [:index, :show] do
resources :friendships, only: [:create, :destroy]
end
我真正的问题是。我希望以一种方式使用友谊,signed_in用户可以检查用户列表,如果朋友不在朋友列表中,则添加朋友。现在我可以多次添加一个朋友。而且,用户可以将自己添加为朋友。
如何使用if/else
语句修复此链接:
显示用户个人资料有效:
<section>
<h1>
<%= @user.username %>
</h1>
<%= link_to "Arkadaşlarıma Ekle", friendships_path(:friend_id => @user), :method => :post,class: "btn btn-large btn-primary" %>
</section>
而在这里,我无法找到显示朋友个人资料的方式。 :
<% for friendship in @friendships %>
<%= link_to friendship.friend.username, '#' %>
(<%= link_to 'Sil', friendship, :method => :delete %>)
<% end %>
.. 耙路线:
我可以理解,我必须使用正确的if / elses但我在嵌套我的资源和路由时迷失了。 。谢谢你的解释..
这些是我的编辑: 在我的users_controller中:
def user_is_friend?(other_user)
current_user.friendships.find_by_friend_id(other_user.id)
end
<% unless user_is_friend?(@user) %>
<%= button_to "Add friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
这是对的吗?
答案 0 :(得分:2)
我建议您在用户索引视图中使用变量用户进行循环(for @users do |user|)
以首先添加条件:
<% unless current_user == user %>
- &GT;这将允许您处理除current_user(即您自己)之外的所有用户
然后,您可以定义:
<% user_is_friend = current_user.friendships.find_by_friend_id(user.id) %>
如果用户已经在你朋友的名单中,那么这将是“正确”
然后,最后一篇:
<% if !user_is_friend %>
<%= button_to "Add friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>