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!
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)
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.
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