[RUBY] Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]

Le matériel utilise MacBook Air et l'environnement de développement utilise VScode. ruby2.6.5 rails6.0.3.2

Quand j'ai utilisé administrate pour le gem administrateur et refile pour le gem de lecture d'image sur rails6, j'étais accro à la coopération entre administrate et refile, donc je vais présenter les détails et la solution.

Au fait, administrate_field_refile ne supportait pas les rails6, j'ai donc fait de mon mieux pour ne pas l'utiliser!

Sur l'écran de l'administrateur (localhost: 3000 / admin), lorsque j'essaie d'ajouter de nouvelles données, la partie d'entrée de l'image n'est pas une sélection de fichier mais une zone de texte.

Lorsque je passe à localhost: 3000 / admin et que je tente de créer un nouvel utilisateur, la partie profile_image est une zone de texte. (Bas de la deuxième image)

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

Donc, pour résoudre cela, il semble qu'il existe un joyau appelé administrate_field_refile lorsque j'ai recherché diverses choses, mais comme ce n'était pas compatible avec rails6, j'ai décidé de procéder dans le sens de la personnalisation d'administrate.

Personnaliser administrer

Tout d'abord, affichons le code dans administrate, la partie qui sera personnalisée localement. Reportez-vous à la documentation administrative et ajoutez des contrôleurs, des vues et des champs dashbord.

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

Ensuite, réécrivez le profile_image_id: Field :: String, de dashbord comme suit. Référence; http://administrate-prototype.herokuapp.com/adding_custom_field_types

app/dashboards/user_dashboard.rb


  ATTRIBUTE_TYPES = {
   ~réduction~
   profile_image_id: RefileField,
  }.freeze

Modifiez ensuite les vues du formulaire de la zone de texte à Sélectionner un fichier.

: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>

Réécrivez ensuite app / fields / refile_field.rb comme suit:

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

Si vous le laissez tel quel, le texte rouge "Paramètres non autorisés:" sera affiché sur la console et vous ne pourrez pas définir l'image, alors permettez-le ci-dessous. (Dans ~~~, mettez l'élément à enregistrer. S'il y a une omission, il sera affiché en rouge dans le terminal, donc vérifiez et ajoutez-le à chaque fois)

python


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

Cela vous permettra peut-être d'enregistrer des données d'image depuis administrer.

Si vous souhaitez pouvoir définir un mot de passe ou rendre l'écran d'enregistrement plus facile à voir, veuillez vous reporter à ce qui suit. http://blog.319ring.net/2016/05/14/custom_view_administrate/


Si vous le trouvez utile, veuillez cliquer sur le bouton LGTM: raise_hand_tone1:

Recommended Posts

Je souhaite pouvoir lire des fichiers en utilisant refile avec administrate [rails6]
Je souhaite surveiller un fichier spécifique avec WatchService
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux jouer avec Firestore de Rails
[Rails] Je veux charger du CSS avec webpacker
Je souhaite télécharger un fichier sur Internet en utilisant Ruby et l'enregistrer localement (avec prudence)
Rails6 Je veux créer un tableau de valeurs avec une case à cocher
Je veux utiliser une petite icône dans Rails
Je souhaite authentifier les utilisateurs auprès de Rails avec Devise + OmniAuth
Je souhaite définir une fonction dans la console Rails
Je souhaite lire le fichier de propriétés avec un nom de fichier autre que application.yml ou application- [nom du profil] .yml avec Spring Boot
Je veux trouver un chemin relatif dans une situation où Path est utilisé
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Je veux faire une liste avec kotlin et java!
Je veux créer une fonction avec kotlin et java!
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
Je veux créer un fichier Parquet même en Ruby
J'ai essayé de pouvoir passer plusieurs objets avec Ractor
Je veux pouvoir penser et écrire moi-même des expressions régulières. ..
Je veux accrocher la génération / ouverture d'un fichier journal avec log4j # FileAppender
J'ai essayé de créer une application simple en utilisant Dockder + Rails Scaffold
[Rails] Je souhaite ajouter des données aux paramètres lors de la transition avec link_to
Je veux extraire entre des chaînes de caractères avec une expression régulière
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
Correction de la possibilité de sauvegarder une colonne spécifique vide avec l'enregistrement actif
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
Je veux écrire un joli build.gradle
Je veux créer un fichier de guerre Servlet avec OpenJDK sur CentOS7. Sans mvn. Sans connexion Internet.
Je souhaite sélectionner plusieurs éléments avec une disposition personnalisée dans la boîte de dialogue
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
Je veux écrire un test unitaire!
[Note] Je veux obtenir dans l'ordre inverse en utilisant afterLast avec JdbcTemplate
Je souhaite créer un SNS Web sombre avec Jakarta EE 8 avec Java 11
Je souhaite afficher un PDF chinois (coréen) avec des rapports fins
Si vous voulez créer un fichier zip avec Ruby, c'est rubyzip.
Je veux ForEach un tableau avec une expression Lambda en Java
Je veux introduire un comité avec des rails sans devenir trop sale
[Rails] Comment lire le fichier XML téléchargé depuis l'écran en type Hash
[Android] Je souhaite créer un ViewPager pouvant être utilisé pour les didacticiels
Même en Java, je veux sortir true avec un == 1 && a == 2 && a == 3 (deuxième décoction Javassist)
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
Comment créer un formulaire Excel à l'aide d'un fichier modèle avec Spring MVC
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (Black Magic)
[Rails] Je veux tester avec RSpec. Nous soutenons votre démarche [Procédure d'introduction]
Lire une chaîne dans un fichier PDF avec Java
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Écrire dans un fichier en utilisant ShiftJIS ・ Lire un fichier (Kotlin / JVM)
[Ruby] Je veux faire un saut de méthode!
Je veux utiliser java8 forEach avec index
Je veux écrire une simple répétition d'une chaîne de caractères
[Rails] J'ai créé une fonction de brouillon en utilisant enum
Je souhaite concevoir une structure pour la gestion des exceptions