Typeerror (kann nicht gleich Null in String konvertieren) Mit Attachment_Fu
-
18-09-2019 - |
Frage
Ich bin Umgang mit Dateianhängen in meine Rails-Anwendung mit Attachment_fu, die eine public_filename
Methode bietet eine Datei die URL abzurufen.
Ich verwende es auf einem Modell Abdeckung genannt, also wenn ich die URL einer hochgeladenen Titelbild aufrufen möchten, in einer Ansicht, die ich tun würde:
<%= image_tag(@cover.public_filename) %>
Dies funktioniert gut, wenn der Benutzer die entsprechende Anlage hat, aber in meiner Anwendung es ist keine Voraussetzung für einen Benutzer, eine Anlage zu laden.
Daher @cover.public_filename
Aufruf wird eine Typeerror werfen. Kann nicht gleich Null in String aus dem offensichtlichen Grund konvertieren, dass die Datei gleich Null ist
Aber ich habe Probleme beim Hinzufügen von Logik für dieses Problem effektiv, da das Objekt gleich Null ist, und alle meine Versuche, mit Dingen wie unless @cover.public_filename.nil?
oder if @cover.public_filename == nil
haben dabei gewesen fruchtlos und verursachen den gleichen Typ Fehler.
Was bin ich fehlt?
Lösung
Ich habe nicht mit attachment_fu arbeiten, aber wie ich sehe public_filename ist Methode, die auf einigen Feldern beruht, die gleich Null sind, wenn Sie nicht über Befestigung angebracht. Hier ich gelesen, dass attachment_fu sollte immer hat Befestigung - und dies ist wahrscheinlich ein Grund, warum es nicht für Sie arbeiten. Der Autor auch vorschlagen Büroklammer Plugin. Werfen Sie einen Blick auf sie!
Andere Tipps
<%= image_tag(@cover.public_filename) unless @cover.nil? %>
kann leider nicht kommentieren, so ist hier ein Update statt:
@cover.public_filename?
wird hier nicht arbeiten, weil @cover
ein nil
Objekt ist und als solche haben keine public_filename?
Methode.
nil.respond_to?('public_filename?') #=> false
Aktualisiert:
Machen Sie es:
<%= image_tag(@cover.public_filename) if @cover && @cover.public_filename? %>
Dies könnte helfen .. http://david-burger.blogspot.com/2008/ 10 / attachmentfu-mit-optional.html