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
Danke @Dharam, warum es nicht mit 'for' funktioniert? Ich verstehe nicht. –
Ich habe nicht gesagt, 'for' Schleife funktioniert nicht. Es ist nur so, dass 'each' für die Iteration die' Ruby' Methode ist. – Dharam
Ok, weil es das Problem für das 'link_to' war –