Es ist ein Memorandum. Wir haben die Ursache von ActionView :: Template :: Error (ActiveStorage :: InvariableError) und den Umgang damit angenommen und überprüft.
Ich habe beschlossen, den Betrieb der bereitgestellten Anwendung zu überprüfen. Dieses Mal möchte ich einfach manuell überprüfen, ob das Bild hochgeladen wurde. Daher habe ich beschlossen, den Vorgang zu überprüfen, ohne einen Komponententest oder Integrationstest durchzuführen.
Dieses Mal bat ich meine Freunde um mich herum, bei der Funktionsprüfung mitzuarbeiten. In Bezug auf die Zusammenarbeit habe ich darum gebeten, eine Datei an ein Formular anzuhängen, in dem Bilder veröffentlicht werden können, und zu prüfen, ob die veröffentlichte Datei in der Ansicht angezeigt werden kann.
Ich habe von einem Freund eines Mitarbeiters den Bericht erhalten, dass ich eine Bilddatei angehängt habe, und habe daher den Detailbildschirm der bereitgestellten App überprüft. Dann wurde "Es tut uns leid, aber etwas ist schief gelaufen" angezeigt.
Zuerst habe ich das Protokoll und seine Fehlerdetails im Terminal überprüft. (Diesmal Heroku)
% heroku logs --tail
(Unterlassung)
ActionView::Template::Error (ActiveStorage::InvariableError)
34: <div>
35:Bild
36: </div>
37: <%= image_tag @question.image.variant(resize: '200x200'), class: 'question-image' if @question.image.attached? %>
38: <% end %>
39:
40: <%= render 'shared/error_messages', model: @comment %>
app/views/questions/show.html.erb:37
Ich habe den Artikel über den Fehlerinhalt überprüft. Der Schlüssel zur Behebung dieses Fehlers war "Verwenden Sie die Variable? Methode, um zu unterscheiden, ob ein Blob eine Variable ist". Die hier erwähnte Variable ist das angehängte Bild, aber es stellte sich heraus, dass der Schlüssel ist, ob die richtige Variable (Bild) angegeben ist.
"Was ist variabel? An erster Stelle?"
Als ich es im Internet nachgeschlagen habe, wurde es bei der Verwendung von Variablen verwendet, um das Aufrufen des Bildes nur dann zu ermöglichen, wenn es True war. Durch Kombinieren mit der ActiveStorage.variable_content_types-Methode stellte ich dann fest, dass das Anhängen von Bildern nur mit der angegebenen Erweiterung begrenzt wird.
Erstens ist die von einem Freund gepostete Datei keine Bilddatei oder ein Bild mit einer von active_storage unterstützten Erweiterung. Ich habe die Hypothese aufgestellt.
Ich habe einen Freund nach der Möglichkeit gefragt, etwas anderes als ein Bild zu posten. Dann lautete die Antwort "Ich habe es angehängt, ohne mit Tekito über die Dateien zu sprechen, in denen Bilder und Dateien mit anderen Erweiterungen gemischt sind". Mit anderen Worten, es ist sehr wahrscheinlich, dass etwas anderes als das Bild angehängt ist.
Basierend auf dem, was ich von meinen Freunden und meiner eigenen Hypothese gehört habe, habe ich versucht zu prüfen, ob ich eine Datei mit der falschen Erweiterung anhängen und speichern kann und ob die Detailseite zu einem Fehler führen würde.
Wie bei meinen Freunden konnte ich Daten mit einer Erweiterung speichern, die nichts damit zu tun hatte. Als ich dann zur Detailseite wechselte, wurde auch die Meldung "Es tut uns leid, aber etwas ist schief gelaufen" angezeigt.
Mit anderen Worten, es stellte sich heraus, dass "eine Datei mit der richtigen Erweiterung nicht gesendet wurde".
Verwenden Sie in Zukunft die ActiveStorage.variable_content_types-Methode usw., damit das Speichern anderer als einer bestimmten Erweiterung abgelehnt wird, damit ein Fehler wie dieser nicht auftritt.
Während des Testvorgangs war das Hochladen manchmal nicht möglich, wenn die Bilderweiterung .heic war (in einigen Fällen ist die Ursache unbekannt). Wie im zweiten Artikel des Referenzartikels beschrieben, scheint es, dass derzeit keine Dateien mit der Erweiterung .heic unterstützt werden. Daher ist es möglicherweise besser, dies zu vermeiden und nur gut oder heic zu schreiben. Ich weiß es nicht.
Das Lesen von Artikeln auf Englisch ist ziemlich wichtig
https://edgeapi.rubyonrails.org/classes/ActiveStorage/InvariableError.html https://stackoverflow.com/questions/60686249/activestorageinvariableerror-in-homeindex https://qiita.com/xusaku_/items/36a61e35b6cd863bbf9d
Recommended Posts