Gibt es eine Rails-Funktion, um zu prüfen, ob eine partielle existiert?
Wenn ich das Rendern einer partiellen, die nicht existiert, bekomme ich eine Exception. Ich würde gerne prüfen, ob eine teilweise vorhanden ist, bevor das rendering und im Fall es nicht existiert, ich werde machen etwas anderes. Ich habe folgenden code in meiner .erb-Datei, aber ich denke, es sollte ein besserer Weg, dies zu tun:
<% begin %>
<%= render :partial => "#{dynamic_partial}" %>
<% rescue ActionView::MissingTemplate %>
Can't show this data!
<% end %>
InformationsquelleAutor der Frage Daniel Cukier | 2010-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Derzeit verwende ich das folgende in meine Schienen 3/3.1 Projekte:
Den Vorteil gegenüber anderen Lösungen, die ich gesehen habe, ist, dass die Anzeige in der Ansicht "alle" Pfade statt nur Ihre rails-root. Dies ist wichtig für mich, da ich eine Menge von Schienen-Motoren.
Funktioniert das auch in Rails 4.
InformationsquelleAutor der Antwort Rein
Ich kämpfte mit diesem auch. Dies ist die Methode, die ich endete mit:
Grundsätzlich, wenn die teilweise nicht vorhanden ist, nichts zu tun. Haben Sie wollen etwas drucken, wenn die teilweise fehlt, obwohl?
Edit 1: ach, ich fehl am Leseverständnis. Du hast gesagt, du wolltest dir machen etwas anderes. In diesem Fall, wie über dieses?
oder
Edit 2:
Alternative: Prüfung auf Existenz der Datei nur teilweise:
InformationsquelleAutor der Antwort Jeff
Innerhalb einer Ansicht, template_exists? funktioniert, aber der Aufruf-Konvention funktioniert nicht mit dem einzigen Teil des namens string, anstatt es dauert template_exists?(name, Präfix, teilweise)
Zu prüfen, teilweise auf Pfad:
app/views/posts/_form.html-Code.slim
Verwenden:
InformationsquelleAutor der Antwort Luke Imhoff
In Rails-3.2.13, wenn Sie in einem controller, die Sie verwenden können :
template_exists?
delegiertlookupcontext
wie Sie sehen können, inAbstractController::ViewPaths
_prefixes
gibt den Zusammenhang mit der Steuerung der Vererbungskette.true
weil Sie sich für eine partielle (können Sie dieses argument weglassen, wenn Sie möchten, eine regelmäßige Vorlage).http://api.rubyonrails.org/classes/ActionView/LookupContext/ViewPaths.html#method-i-template_exists-3F
InformationsquelleAutor der Antwort Flackou
Ich weiß, das wurde beantwortet und ist Millionen Jahre alt, aber hier ist, wie ich landete Festsetzung dieses für mich...
Rails 4.2
Zuerst lege ich diese in mein application_helper.rb
und jetzt, anstatt zu telefonieren
<%= render "#{dynamic_path}" if lookup_context.find_all("#{dynamic_path}",[],true).any? %>
ich einfach anrufen
<%= render_if_exists "#{dynamic_path}" %>
hoffe, das hilft. (habe nicht versucht, in rails3)
InformationsquelleAutor der Antwort afxjzs
Habe ich dieses Paradigma auf viele Gelegenheiten mit großem Erfolg:
Den Vorteil, der code oben ist, können wir Griff Schlepptau bestimmten Fällen:
Wenn wir einfach nur den code verwenden
<%= render :partial => "#{dynamic_partial}" rescue nil %>
oder manche Derivate, die teilweise vorhanden kann aber eine Ausnahme auslösen, die werden stillschweigend gegessen und eine Quelle der Schmerzen zu Debuggen.InformationsquelleAutor der Antwort br3nt
Was über Ihre eigenen Helfer:
InformationsquelleAutor der Antwort Andrey