0

Ich bin ziemlich neu in Rails und ich habe das Modell FavoriteUser erstellt, um Benutzern zu anderen bevorzugten Benutzern zu ermöglichen. Das funktioniert gut. Ich zeige den Favoriten des aktuellen Benutzers auf dem Tool (ein anderes Modell) Index anzeigen.Schienen 4: Zielobjekte durch ein Modell

Jetzt möchte ich auch die Tools anzeigen, die vom Favoriten auf dieser Seite erstellt wurden, aber ich habe keine Ahnung, wie das zu erreichen ist.

Hinzufügen einer Schleife für die Newset-Tools von bevorzugten Benutzern veröffentlicht!

%h2 My Tools 
- @tools.each do |tool| 
    = image_tag tool.cover_filename.url 
    %h2= link_to tool.title, tool 
    %p= tool.subtitle 
    %p= tool.tag_list 
    %p= tool.impressionist_count 
    %p= link_to "Edit", edit_tool_path(tool) 
    %p= link_to 'http://ocubit.com/tools/'+tool.id.to_s 
    %p= time_ago_in_words(tool.created_at) 

Vielen Dank im Voraus für jede Hilfe!

+0

Sie wissen offenbar schon, wie man Assoziationen verwendet ... können Sie Ihren Versuch zeigen? –

Antwort

1

Wenn Sie schauen, um die @tools des `current_user zu bekommen, versuchen Sie Folgendes:

def index 
    @favorites = current_user.favorites.order("created_at DESC") 
    @userfavorites = current_user.userfavorites.order("created_at DESC") 
    @tools = current_user.tools.order("created_at DESC") 
    @user = current_user 
end 

Wenn Sie stattdessen die @tools des users zu erhalten suchen, sind von current_user‚s favorited users, dann versuchen Sie folgendes:

def index 
    @favorites = current_user.favorites.order("created_at DESC") 
    @userfavorites = current_user.userfavorites.order("created_at DESC") 
    @tools = Tool.where(user_id: @userfavorites.collect(&:id)).order("created_at DESC") 
    @user = current_user 
end 

Oder Sie diese Logik in das User Modell bewegen konnte und Benutzer, die Methode, wie folgt:

class User < ActiveRecord::Base 
    def tools_of_favorited_users 
    Tool.where(user_id: userfavorites.collect(&:id)) 
    end 
end 

def index 
    @favorites = current_user.favorites.order("created_at DESC") 
    @userfavorites = current_user.userfavorites.order("created_at DESC") 
    @tools = current_user.tools_of_favorited_users.order("created_at DESC") 
    @user = current_user 
end 
+0

Vielleicht hast du mich falsch verstanden. Die Werkzeugschleife funktioniert einwandfrei. Ich möchte nur eine Schleife hinzufügen (bearbeitet den Code @IndexView, so dass Sie sehen können, wo), die alle neuesten Tools enthält von allen Ihren bevorzugten Benutzern veröffentlicht. – Gugubaight

+0

Die Antwort wurde aktualisiert. – Dharam

+0

Funktioniert gut, danke, dass Sie mir geholfen haben! – Gugubaight