2016-03-28 13 views
0

Ich erstelle ein folgendes System genau so mit Benutzern (Devise). Ich folgte den Ryan Bates Rails Casts http://railscasts.com/episodes/163-self-referential-associationRails: Der richtige Weg, um zur Benutzershow-Ansicht zu gelangen, die ich als Freund hinzugefügt habe

In diesem Code können wir Freunde hinzufügen und Freunde löschen. Ich erstelle eine user#show Ansicht, um ihre Konten zu verwalten.

Ich möchte ein link_to auf dem Bild und Name Freund ich hinzugefügt, um zu seinem/ihrem Profil zu gehen.

Wenn ich einen Freund hinzufügen möchte ich es Ansicht wie in meiner Show angezeigt werden hier

<ul class="list-unstyled" > 
    <% for friendship in @user.friendships %> 
    <li class="col-sm-6 col-sm-3 col-md-3 col-md-offset"> 
     <div class="friend-picture"> 
     <%=h image_tag friendship.friend.picture %> 
      </div> 
      <h6> 
      <%=h friendship.friend.first_name %> <%=h friendship.friend.last_name[0] %>. 
       <%= link_to friendship, :method => :delete do %> 
       <i class="fa fa-times fa-lg"></i> 
      <% end %> 
      </h6> 
     </li> 
     <% end %> 
    </ul> 

Die Migration genannt wird FriendShip

class CreateFriendships < ActiveRecord::Migration 
    def change 
    create_table :friendships do |t| 
     t.integer :user_id 
     t.integer :friend_id 

     t.timestamps null: false 
    end 
    end 
end 

Das Modell für User ist

has_many :friendships 
has_many :friends, :through => :friendships 

Das Modell für Friendship ist

belongs_to :user 
belongs_to :friend, :class_name => "User" 

Die Friendship Controller

class FriendshipsController < ApplicationController 
    def create 
    @friendship = current_user.friendships.build(:friend_id => params[:friend_id]) 
    if @friendship.save 
     flash[:notice] = "Added friend." 
     redirect_to current_user 
    else 
     flash[:error] = "Unable to add friend." 
     redirect_to current_user 
    end 
    end 

def destroy 
    @friendship = current_user.friendships.find(params[:id]) 
    @friendship.destroy 
    flash[:notice] = "Removed friendship." 
    redirect_to current_user 
    end 
end 

Sie

Antwort

1

Versuchen Sie, die folgenden für Ihre Antwort danken:

<ul class="list-unstyled" > 
<% @user.friendships.each do |friendship| %> 
    <li class="col-sm-6 col-sm-3 col-md-3 col-md-offset"> 
    <div class="friend-picture"> 
     <%= link_to user_path(friendship.friend) do %> 
     <%= h image_tag friendship.friend.picture %> 
     <% end %> 
    </div> 
    <h6> 
     <%= link_to user_path(friendship.friend) do %> 
     <%=h friendship.friend.first_name %> <%=h friendship.friend.last_name[0] %> 
     <% end %> 
     <%= link_to friendship, :method => :delete do %> 
     <i class="fa fa-times fa-lg"></i> 
     <% end %> 
    </h6> 
    </li> 
<% end %> 
</ul> 

ich die each die for Schleife auch aktualisiert werden, die mehr ruby ist Weg.

+0

Danke @Dharam, warum es nicht mit 'for' funktioniert? Ich verstehe nicht. –

+1

Ich habe nicht gesagt, 'for' Schleife funktioniert nicht. Es ist nur so, dass 'each' für die Iteration die' Ruby' Methode ist. – Dharam

+0

Ok, weil es das Problem für das 'link_to' war –

Verwandte Themen