Wie rufe ich eine Methode in der Anwendungshilfe aus einer Ansicht auf?
Definierte ich eine benutzerdefinierte Methode in application_helper.rb-Datei wie der folgenden:
def rxtrnk(line)
rxTRNK = /\w{9,12}/m
trnks = Array.new
i = 0
while i <= line.size
if line[i].match(rxTRNK)
trnks[i] = line[i].scan(rxTRNK)
end
i += 1
end
return trnks
end
Dann habe ich versucht anzurufen, es aus einer Sicht etwa so:
<% @yo = rxtrnk(@rts)%>
Aber ich bekomme eine Fehler-Seite wie diese:
NoMethodError in TrunksController#routesperswitch
undefined method `rxtrnk' for #<TrunksController:0x7f2dcf88>
Ich weiß, das ist ein sehr newbie-Frage, aber ich konnte nicht finden, die Lösung zu googeln 🙁
Vielen Dank für Ihre Hilfe
edit/hier ist der vollständige application_helper.rb
module ApplicationHelper
def rxtrnk(line)
rxTRNK = /\w{9,12}/m
trnks = Array.new
i = 0
while i <= line.size
if line[i].match(rxTRNK)
trnks[i] = line[i].scan(rxTRNK)
end
i += 1
end
return trnks
end
end
InformationsquelleAutor der Frage b1gtuna | 2009-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
nicht sicher, was das Problem ist, aber Sie können dies lösen, indem Sie zählen die application_helper in der Steuerung
In der Ansicht nennen:
InformationsquelleAutor der Antwort ez.
Sollten Sie darauf achten, dass der Helfer mit der Methode, die Sie aufrufen möchten, wird von den aktuellen controller (in deinem Fall die ApplicationHelper). Dies wird gesteuert mit die "
Helfer
- Methode" in top-Controllern.Viele Rails-Entwickler gehören einfach alle Helfer standardmäßig zu vermeiden, dass Sie über diese denken. Um dies zu tun fügen Sie "
helper :all
" an die Spitze der ApplicationController:Können Sie auch auswählen, dass nur die ApplicationHelper:
InformationsquelleAutor der Antwort Thomas Watson
Ihre TrunksController kann nicht sein, die sich von der ApplicationController. Der application-Controller umfasst die Anwendung Helfer, so dass, wenn Sie erweitern Sie Ihr controller-form, sollten Sie Zugang zu diesen Methoden.
Dem start des Controllers sollte so etwas wie:
InformationsquelleAutor der Antwort Pete