Ruby on rails Rails 3中的用户友好嵌套逻辑

Ruby on rails Rails 3中的用户友好嵌套逻辑,ruby-on-rails,erb,Ruby On Rails,Erb,我正在尝试完成我的论坛应用程序。我想安排用户友谊。我使用Desive作为身份验证系统。我想要一些建议。 我应该将资源嵌套在用户和友谊中吗。这是铁路工人使用的方式: devise_for :users resources :users, only: [:index, :show] resources :friendships, only: [:create, :destroy] 我是这样使用的: devise_for :users resources :users, on

我正在尝试完成我的论坛应用程序。我想安排用户友谊。我使用Desive作为身份验证系统。我想要一些建议。 我应该将资源嵌套在用户和友谊中吗。这是铁路工人使用的方式:

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
我真正的问题是。我想以一种方式使用友谊,即登录用户可以检查用户列表,如果他不在friendslist中,则可以添加朋友。现在我可以多次添加朋友。此外,用户还可以将自己添加为好友

如何使用
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>

@用户),:方法=>:post,类:“btn btn大型btn主”%>
在这里我找不到显示朋友个人资料的方法

<%  for friendship in @friendships %> 
<%= link_to friendship.friend.username, '#' %>
(<%= link_to 'Sil', friendship, :method => :delete %>)
<% end %>

(:删除%>)
。。 耙道:

我可以理解,我必须使用正确的if/else,但我在嵌套资源和路由时迷失了方向。谢谢你的解释

以下是我的编辑: 在“我的用户”\u控制器中:

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 %>
def user\u是朋友?(其他用户)
当前用户。友谊。通过朋友id(其他用户。id)查找
结束
用户),:方法=>:发布%>

对吗

我建议您在用户索引视图中,当您与可变用户(
for@users do | user |)循环时,首先添加一个条件:

<% unless current_user == 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 %>

用户),:方法=>:发布%>

POST对应于友谊控制器中的创建操作。当您将用户分配到“:friend\u id”时,您可以通过执行以下操作来建立相应的友谊:“@friend=current\u user.friendships.build(:friend\u id=>params[:friend\u id])”添加朋友没有任何问题。唯一的问题是添加了friends条件。我需要一个方法定义。好吧,如果我再看一遍你的问题,看起来它现在已经被回答了。如果不是这样,我想你应该重新措辞。