0

フォーラムの申し込みを完了しようとしています。ユーザーの友情をアレンジしたい。認証システムとして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 %>

それが正しいか?

4

1 に答える 1

2

変数userでループしているときは、ユーザーインデックスビューで(for @users do |user|)最初に条件を追加するには:

<% unless current_user == user %>

->これにより、current_user(つまり自分自身)を除くすべてのユーザーを処理できるようになります

次に、これを定義できます。

<% user_is_friend = current_user.friendships.find_by_friend_id(user.id) %>

ユーザーがすでに友達のリストに含まれている場合、これはTRUEになります

そして最後のピース:

<% if !user_is_friend %>
  <%= button_to "Add friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
于 2012-07-09T13:28:55.937 に答える