[RUBY] Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.

Die Hardware verwendet MacBook Air und die Entwicklungsumgebung verwendet VScode. ruby2.6.5 rails6.0.3.2

Als ich "Administrate" für das Administrator-Gem und "Refile" für das Image-Lese-Gem auf Rails6 verwendet habe, war ich süchtig nach der Zusammenarbeit zwischen "Administrate" und "Refile", daher werde ich die Details und die Lösung vorstellen.

Übrigens hat administrate_field_refile Rails6 nicht unterstützt, also habe ich mein Bestes versucht, es nicht zu verwenden!

Wenn ich auf dem Administratorbildschirm (localhost: 3000 / admin) versuche, neue Daten hinzuzufügen, ist der Eingabeteil des Bildes keine Dateiauswahl, sondern ein Textfeld.

Wenn ich zu localhost: 3000 / admin gehe und versuche, einen neuen Benutzer zu erstellen, ist der Teil profile_image ein Textfeld. (Unten im zweiten Bild)

スクリーンショット 2020-09-08 21.47.03.png スクリーンショット 2020-09-08 21.47.12.png

Um dies zu lösen, scheint es ein Juwel namens administrate_field_refile zu geben, als ich verschiedene Dinge recherchierte. Da dies jedoch nicht mit Rails6 kompatibel war, habe ich mich entschlossen, die Verwaltung anzupassen.

Anpassen verwalten

Lassen Sie uns zunächst den Code in administrate anzeigen, den Teil, der lokal angepasst wird. Lesen Sie Dokumentation verwalten und fügen Sie Dashbord-Controller, Ansichten und Felder hinzu.

$ rails generate administrate:dashboard User
$ rails generate administrate:views User
$ rails generate administrate:field refile

Schreiben Sie als Nächstes die profile_image_id: Field :: String von dashbord wie folgt um. Referenz: http://administrate-prototype.herokuapp.com/adding_custom_field_types

app/dashboards/user_dashboard.rb


  ATTRIBUTE_TYPES = {
   ~Kürzung~
   profile_image_id: RefileField,
  }.freeze

Ändern Sie dann die Ansichten des Formulars aus dem Textfeld in Datei auswählen.

:app/views/fields/refile_field/_form.html.erb



<div class="field-unit__label">
  <%= f.label field.attribute %>
</div>
<div class="field-unit__field">
  <%= f.attachment_field :profile_image, direct: field.direct, presigned: field.presigned, multiple: field.multiple %>
</div>

Schreiben Sie dann app / fields / refile_field.rb wie folgt neu:

app/fields/refile_field.rb


require "administrate/field/base"

class RefileField < Administrate::Field::Base
  def to_s
    data
  end

  def direct
    options.fetch(:direct, false)
  end

  def presigned
    options.fetch(:presigned, false)
  end

  def multiple
    options.fetch(:multiple, false)
  end
end

Wenn dies unverändert bleibt, wird der rote Text "Unzulässige Parameter:" auf der Konsole angezeigt, und ich denke, dass das Bild nicht eingestellt werden kann. Lassen Sie es daher unten zu. (Geben Sie in ~~~ das zu registrierende Element ein. Wenn es eine Auslassung gibt, wird es im Terminal rot angezeigt. Überprüfen Sie es daher und fügen Sie es jedes Mal hinzu.)

python


def resource_params
  params.require(:user).permit(:profile_image,:~~~,:~~~,:~~~)
end

Möglicherweise können Sie so Bilddaten von der Verwaltung registrieren.

Wenn Sie ein Passwort festlegen oder den Registrierungsbildschirm besser sehen möchten, lesen Sie bitte die folgenden Informationen. http://blog.319ring.net/2016/05/14/custom_view_administrate/


Wenn Sie es nützlich finden, klicken Sie bitte auf die LGTM-Schaltfläche: raise_hand_tone1:

Recommended Posts

Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.
Ich möchte eine bestimmte Datei mit WatchService überwachen
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich möchte mit Firestore von Rails spielen
[Rails] Ich möchte CSS mit Webpacker laden
Ich möchte eine Datei mit Ruby im Internet herunterladen und lokal speichern (mit Vorsicht).
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
Ich möchte ein kleines Symbol in Rails verwenden
Ich möchte Benutzer mit Devise + OmniAuth bei Rails authentifizieren
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte die Eigenschaftendatei mit einem anderen Dateinamen als application.yml oder application- [Profilname] .yml mit Spring Boot lesen
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
[Rails] Ich habe versucht, eine Mini-App mit FullCalendar zu erstellen
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich habe versucht, mit Ractor mehrere Objekte übergeben zu können
Ich möchte in der Lage sein, selbst reguläre Ausdrücke zu denken und zu schreiben. ..
Ich möchte die Generierung / Öffnung einer Protokolldatei mit log4j # FileAppender verknüpfen
Ich habe versucht, eine einfache Anwendung mit Dockder + Rails Scaffold zu erstellen
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
Ich möchte mit einem regulären Ausdruck zwischen Zeichenketten extrahieren
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
Es wurde behoben, dass eine bestimmte Spalte mit aktivem Datensatz leer gespeichert werden konnte
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
Ich möchte ein schönes build.gradle schreiben
Ich möchte eine Servlet-War-Datei mit OpenJDK unter CentOS7 erstellen. Ohne mvn. Ohne Internetverbindung.
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Ich möchte einen Unit Test schreiben!
[Hinweis] Ich möchte mit afterLast mit JdbcTemplate in umgekehrter Reihenfolge arbeiten
Ich möchte mit Jakarta EE 8 mit Java 11 ein dunkles Web-SNS erstellen
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Wenn Sie mit Ruby eine Zip-Datei erstellen möchten, ist dies Rubyzip.
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
Ich möchte ein Komitee mit Rails vorstellen, ohne zu schmutzig zu werden
[Rails] Lesen der vom Bildschirm hochgeladenen XML-Datei im Hash-Typ
[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Sogar in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (Javassist zweite Abkochung)
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
So erstellen Sie ein Excel-Formular mithilfe einer Vorlagendatei mit Spring MVC
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 (Black Magic) ausgeben.
[Rails] Ich möchte mit RSpec testen. Wir unterstützen Ihren Schritt [Einführungsverfahren]
Lesen Sie eine Zeichenfolge in einer PDF-Datei mit Java
[Rails] Rails neu, um eine Datenbank mit PostgreSQL zu erstellen
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
Mit ShiftJIS in Datei schreiben ・ Datei lesen (Kotlin / JVM)
[Ruby] Ich möchte einen Methodensprung machen!
Ich möchte Java8 für jeden mit Index verwenden
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
[Rails] Ich habe eine Entwurfsfunktion mit enum erstellt
Ich möchte eine Struktur für die Ausnahmebehandlung entwerfen