用户友谊在Rails 3中嵌套逻辑

时间:2012-07-09 13:14:50

标签: ruby-on-rails erb

我正在尝试完成论坛申请。我想安排用户友谊。我使用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 %>

这是对的吗?

1 个答案:

答案 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 %>