
ubuntu(WSL)
Rails 6.0.2
Ruby 2.5.1
--Création d'une fonction de balise --Création d'une fonction de publication (CRUD) Veuillez vous référer à ici pour créer la fonction de balise.
Exécutez la commande suivante et placez-la dans vendor / assets.
Si vous n'avez pas de vendeur / actifs, créez-en un vous-même.
curl https://raw.githubusercontent.com/aehlke/tag-it/master/js/tag-it.js -o vendor/assets/javascripts/tag-it.js
curl https://raw.githubusercontent.com/aehlke/tag-it/master/css/jquery.tagit.css -o vendor/assets/stylesheets/jquery.tagit.css
curl https://raw.githubusercontent.com/aehlke/tag-it/master/css/tagit.ui-zendesk.css -o vendor/assets/stylesheets/tagit.ui-zendesk.css
Puisque Jqury est utilisé, veuillez ajouter jqury-ui-rails au Gemfile.
Gemfile.
gem 'ransack'
gem 'acts-as-taggable-on', '~> 6.0'
gem 'jquery-ui-rails' #ajouter à
Ajoutez ce qui suit à ʻapplication.js et ʻapplication.scss pour charger Tagit et JquryUi.
Je vais tous les mettre pour le moment.
application.js
//= require jquery #ajouter à
//= require rails-ujs #ajouter à
//= require popper
//= require turbolinks #ajouter à
//= require_tree . #ajouter à
//= require bootstrap
//= require activestorage
//= require jquery-ui/widgets/autocomplete #ajouter à
//= require tag-it #ajouter à
application.scss
/*
 *= require_tree . #ajouter à
 *= require jquery.tagit #ajouter à
 *= require tagit.ui-zendesk #ajouter à
 *= require_self #ajouter à
*/
Créez une zone de texte.
Ajoutez un identifiant arbitraire dans le bloc form_for.
Si vous ajoutez id à f.text_field, deux champs de texte seront créés, alors ajoutez id à .form-group.
views/micropost/_form.html.slim
= form_with model:  micropost, local: true do |f|
  = render 'shared/error_messages', object: f.object
 
  .form-group id="micropost-tags"
    = f.label :tag
    //Affichage des balises / enregistrement
    //= f.text_field :tag_list, value: @micropost.tag_list.join(","), class: "form-control"
Appeler tagit
assets/javascripts/microposts.js 
$(document).on('turbolinks:load', function () {
  return $('#micropost-tags').tagit({
  });
Actuellement, l'attribut name est le même, alors activez singleField et modifiez l'attribut name.
Ajoutez-le au microposts.js que j'ai écrit plus tôt.
assets/javascripts/microposts.js 
$(document).on('turbolinks:load', function () {
  $('#micropost-tags').tagit({
    fieldName: 'micropost[tag_list]',
    singleField: true,
  });
Le champ de saisie est <input type =" hidden "style =" display: none; "value =" Ruby, Python "name =" micropost [tag_list] ">
Ajoutez : tag_list aux paramètres du contrôleur.
app/controllers/microposts_controller.rb 
 def micropost_params
      params.require(:micropost).permit(:title, :content, { images: [] }, :tag_list)
 end
Passer des rails au javascript en utilisant gon.
Ajoutez ce qui suit au Gemfile
Gemfile.
gem 'gon'
Ajoutez ce qui suit à la vue.
views/layouts/application.html.slim
    //= include_gon(:init => true) #Parfois ça marche ici
    = Gon::Base.render_data
    = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
Obtient les balises contenues dans la publication.
app/controllers/microposts_controller.rb 
before_action :set_micropost_tags_to_gon, only: [:edit]
def set_micropost_tags_to_gon
     gon.micropost_tags = @micropost.tag_list
end
Ajouté avec createTag de Tag-it.
Ajoutez-le au microposts.js que j'ai écrit plus tôt.
assets/javascripts/microposts.js 
$(document).on('turbolinks:load', function() {
  var i, len, ref, results, tag;
  $('#micropost-tags').tagit({
    fieldName: 'micropost[tag_list]',
    singleField: true
  });
  if (gon.micropost_tags != null) {
    ref = gon.micropost_tags;
    results = [];
    for (i = 0, len = ref.length; i < len; i++) {
      tag = ref[i];
      results.push($('#micropost-tags').tagit('createTag', tag));
    }
    return results;
  }
});
Vous devriez maintenant voir les balises existantes sur l'écran d'édition.
Récupérez toutes les balises de la liste des balises.
app/controllers/microposts_controller.rb
 before_action :set_available_tags_to_gon, only: [:edit]
 def set_available_tags_to_gon
      gon.available_tags = Micropost.tags_on(:tags).pluck(:name)
 end
Passez gon à ʻavailableTags`. La partie omise est la même que précédemment.
assets/javascripts/microposts.js
$(document).on('turbolinks:load', function () {
  var i, len, ref, results, tag;
  $('#micropost-tags').tagit({
    fieldName: 'micropost[tag_list]',
    singleField: true,
    availableTags: gon.available_tags,
  });
réduction
Je pense que vous pouvez le faire.
Si vous faites une erreur, veuillez faire une demande de modification ou un commentaire.