2016-04-25 4 views
0

Ich brauche Hilfe mit einem Do-Block, der den falsch generierten Link zurückgibt. Ich weiß, dass es eine einfache Lösung ist, aber ich kann es mir nicht vorstellen, da ich ziemlich neu bei Schienen bin, die so einfach mit mir sind.Rails blockieren wiederkehrenden Benutzer und nicht Mitbearbeiter

Ich baue eine App Klon von Wikipedia, wo es Wikis, Benutzer und jetzt Kollaborateure gibt. Dieser Klon ist für ein Projekt-Tutorial gedacht, aber der spezifische Schritt der Implementierung von Kollaborateuren in die Ansicht verwirrte mich. Mit dem unten angegebenen Code erhalte ich einen generierten Link in meinem Benutzer # show des aktuellen Benutzers. Was ich wirklich brauche, ist eine Liste von Wikis, wo der aktuelle Benutzer der Kollaborateur ist.

Lassen Sie mich wissen, ob ein anderer Code benötigt wird, um bei der Fehlerbehebung zu helfen, und ich danke Ihnen im Voraus für jede Hilfe.

Benutzer Sicht anzeigen

<div class="col-sm-4"> 
     <div class="col-md-4"> 
     <% @collaborator.each do |collaborator| %> 
     <div class="row"> 
      <ul> 
      <li><%= link_to collaborator %></li> 
      </ul> 
     </div> 
     <% end %> 
     </div> 
    </div> 

Benutzer-Controller

def show 
    @user = User.find(params[:id]) 
    @wikis = @user.wikis 
    @wiki = Wiki.find(params[:id]) 
    @collaborators = Collaborator.all 
    @collaborator = @wiki.collaborators.find_by(:user_id => current_user.id) 
end 

Benutzermodell

class User < ActiveRecord::Base 
    has_many :wikis 
    has_many :collaborators 
    has_many :collaborating_wikis, through: :collaborators, foreign_key: "wiki_id", class_name: "Wiki" 
    validates :wiki_id, presence: true 
end 

Wiki Modell

class Wiki < ActiveRecord::Base 
    belongs_to :user 
    has_many :collaborators 
    has_many :users, through: :collaborators 
    validates :user_id, presence: true 
end 

Collaborator Modell

class Collaborator < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :wiki 
    validates :wiki_id, :user_id, presence: true 
    validates :wiki_id, uniqueness: { scope: [:wiki_id, :user_id] } 
end 
+0

Hallo Tucker, wäre es sehr nützlich sein, einen Link auf die GitHub Repo zu haben, so dass ich den Repo-Klon nach unten und ein Spiel haben. – Andy

+0

Ihr Code oben macht eine 'each' Schleife auf' @ collaborator', nicht '@ collaborators'. –

Antwort

0

Was sagen Sie in dem fettgedruckten Text und das Bit vor dem fett gedruckten Text scheint im Widerspruch zu mir, aber (ohne zu klonen unten in der Lage, Code und spielen mit ihm), um eine Sammlung von Wikis abrufen, wo der Kollaborateur der aktuelle Benutzer ist, vermute ich, was Sie brauchen:

Controller:
@collaborating_wikis = current_user.collaborating_wikis

Und in der Ansicht:

<% @collaborating_wikis.each do |collaborating_wiki| %> 
    <%= link_to "Wiki", wiki_path(collaborating_wiki) %> 
<% end %> 
+0

Danke Andy, ich habe den Code hinzugefügt, den du zur Verfügung gestellt hast, und ich habe diese Fehlermeldung erhalten: 'Die Quellenassoziation (en)" collaborating_wiki "oder: collaborating_wikis im Modell Collaborator konnte nicht gefunden werden. Versuchen Sie 'has_many: collaborative_wikis,: through =>: Mitbearbeiter,: source =>'. Ist es ein Benutzer oder Wiki? Ich habe die "has_many" -Zuordnung in meinem Benutzermodell, daher bin ich verwirrt, warum ich das jetzt bekomme. Hier ist das Github Repo nur für den Fall: https://github.com/tuckermullen/blocipedia und vielen Dank für die Hilfe btw! – Tucker

+0

Welcher Zweig? Ich habe den Master geklont, aber das Collaborator-Modell ist nicht vorhanden. Übrigens laufen deine Tests für dich? – Andy

+0

Sorry, vergessen zu erwähnen, dass ... es ist der Mitarbeiter Zweig. – Tucker

Verwandte Themen