NoMethodError undefined method `name' for nil:NilClass -Schienen 3
Ich bin immer NoMethodError in SitesController#index
undefined method `subdomain' for nil:NilClass
Ich habe eine Tabelle Konten, die hat eine 'subdomain' - Feld und eine Website-Modell, das eine Unterklasse von Account-Modell:
class Site < Account
end
create_table "accounts", :force => true do |t|
t.string "subdomain"
t.integer "user_id"
Ende
und es ist ein current_account definierte Methode in applications_controller wie diese
def current_account
if !is_root_domain?
current_account = Account.find_by_subdomain(request.subdomains.first)
if current_account.nil?
redirect_to root_url(:account => false, :alert => "Unknown Account/subdomain")
end
else
current_account = nil
end
return current_account
Ende
fordert is_root_domain? Methode unten:
def is_root_domain?
result = (request.subdomains.first.present? && request.subdomains.first != "www") ? false : true
Ende
Ich auch chnaged die current_account Methode dieser aber bekam die gleiche Fehlermeldung:
def current_account
current_account = Account.find_by_subdomain(request.subdomains.first)
end
Unter einer der oben genannten Szenarien, bekomme ich undefined method `subdomain' for nil:NilClass Fehler auf der SitesController#index. die unten gezeigt wird beim Zugriff auf die url:
class SitesController < ApplicationController
def index
@site = Site.find_by_subdomain(current_account.subdomain)
end
def opps
@site = Site.find_by_subdomain(current_account.subdomain)
end
Ende
Habe ich versucht, die verschiedenen tricks kämpfen die Methode kein Fehler, dass ich weiß, wie das hinzufügen von 'attr_ccessible' und ein initiliaze Methode, aber nichts scheint zu funktionieren. Ich habe auch die Konten-Tabelle Feld von 'subdomain' , 'name', aber kein Erfolg. Jeder guide wird geschätzt.
InformationsquelleAutor brg | 2011-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie möglicherweise verwechselt werden, durch die 'redirect_to' im ApplicationController#current_account.
Diese Umleitung nicht sofort geschehen, es geschieht, wenn alles andere fertig ist. So Ihr current_account Methode wird noch return null zurück zu SitesController#index, wo es verwendet wird, um die "subdomain", und das ist, wo bekommen Sie Ihre Fehler.
Wenn Sie rufen Sie die Weiterleitung von einem before_filter, es kann mit diesem Fall, bevor der code selbst in Ihre #index-Methode. Ich würde die Umstrukturierung der code so etwas wie dieses.
Dann:
es ist das hinzufügen der alert wie eine Abfrage-Zeichenfolge, weil die - wenn Sie Ihren code nach den code oben - Sie sind an die root_url Methode. Versuchen Sie, es zu ändern:
redirect_to root_url(:account => false), :alert => "Unknown Account/subdomain"
. Wie Sie sehen können, dass add :Konto => false als Abfrage-string, die ich annehmen, ist, was Sie wollen, aber geht das :alert zu redirect_to.danke ich werde es jetzt ändern. Dank für das stoppen und zu helfen.
sorry, ich habe gerade kopiert den redirect_to Linie ohne es zu betrachten, zu eng.
kein problem @bhousel ja, dachte ich mir so viel 🙂 +1 für eine gute Antwort, wenn
InformationsquelleAutor bhousel
Dein problem ist, dass
current_account
ist null. Stellen Sie sicher, Sie setzen die variable auf einen gültigen (existierenden) Objekt-Instanz.InformationsquelleAutor David Sulc