2016-05-17 22 views
0

Deshalb möchte ich die Ansicht zu erstellen: 1. für normale Benutzer, um zu sehen, es Job App Status:Rails nicht definierte Methode 'job_app'

def index 
    @users ||= current_user 
    @job_apps = @users.job_app 

end 

Es funktioniert perfekt in Aussicht. 2. Trouble (job_app Methode nicht definiert): Ansicht für Administratoren erstellen, so dass sie alle Kandidaten sehen:

def empl 
    @users = User.all.where(:user_type => 'candidate') 
    @job_apps = @users.job_app.all 
end 

Hinweis: ohne @job_apps kann ich alle Benutzer sehen, wie gut.

+1

Sie sagen, Sie "Probleme" haben, wenn versucht wird, die Ansicht für Administratoren zu erstellen. Was genau ist das Problem? Wir können Ihnen keine Antwort geben, wenn Sie uns nicht sagen, was falsch ist. Veröffentlichen Sie alle Fehlermeldungen, Konsolenausgaben und erwartetes vs. tatsächliches Verhalten. – MarsAtomic

+0

@MarsAtomic bearbeitet – andrey

Antwort

0

Ich werde ein bisschen eine Vermutung, hier machen: job_app ist in der Tat ein Verfahren der User Klasse, aber was ist mit dir zu tun haben in Ihrem des Controllers empl Methode ist nicht eine Instanz von User, sondern, eine Instanz von ActiveRecord::Relation, die mehr oder weniger ein Array von User Objekten ist. User.job_app funktioniert, weil job_app ein Mitglied von User ist, aber nicht von ActiveRecord::Relation.

Um zu erreichen, was Sie wollen, müssen Sie ein paar Iterations durch die Elemente dieses Arrays in der Ansicht mit Ihrer empl-Methode verbunden.

Controller-Code:

def empl 
    @users = User.all.where(:user_type => 'candidate') 
end 

Ansicht Code:

<% @users.each do | user | %> 
    <%= user.job_app %> 
<% end %> 
+0

Das ist eine Hardcore-Vermutung genau dort :) – Raffael

+0

@MarsAtomic das funktioniert, aber was, wenn ich etwas wie akzeptieren oder verweigern Methode machen möchte? Ich muss mich wieder damit befassen, aber ich habe keine Idee, wie man link_to schreibt, um die Tabelle job_apps zu aktualisieren – andrey

+0

@andrey Schreibe was du willst in einer separaten Frage und du wirst eine Antwort bekommen. Versuchen Sie, Ihre Fragen zu Stack Overflow so atomar wie möglich zu halten, damit, wenn jemand nach etwas sucht, sie die genaue Antwort auf ihre Frage finden können, nicht mehr und nicht weniger. – MarsAtomic

Verwandte Themen