[RUBY] So installieren Sie die JavaScript-Bibliothek "select2", mit der mehrere Auswahlen von selectbox in Rails 6.0 in Mode kommen

Einführung

Hallo zusammen! Ich bin @hiroki_tanaka, der Produzent von Mayu Sakuma.

Neulich habe ich select2 eingeführt, ein Plug-In, mit dem mehrere Auswahlen von Selectboxen in der Rails 6.0-Serie in Mode kommen. Zu dieser Zeit war ich ein wenig süchtig nach dem Unterschied von der Einführungsmethode bis zur Rails 5-Serie, also fasste ich zusammen, was ich untersuchte.

Nutzungsumgebung

Was ist select2

select2 ist eine JavaScript-Bibliothek, die das HTML-Selectbox-Design in Mode bringt. Unsere offizielle Seite ist hier. → select2 Es ist ein Plug-In, mit dem nicht nur die Benutzeroberfläche der Single-Select-Selectbox, sondern auch die Multi-Select-Selectbox problemlos implementiert werden kann.

Beispiel auf der offiziellen Website

--Vor der Einführung von select2 image.png

--Multiple-Auswahl-Pulldown nach Einführung von select2 image.png

So installieren Sie in Rails 6.0

Die Einführung von select2 in der Rails5-Serie wurde mit Gem eingeführt, ab Rails 6.0 wird jedoch Webpacker anstelle von Gem verwendet. Ich möchte das Verfahren einzeln vorstellen.

1. Einführung in die für select2 erforderliche Bibliothek mit Garn

Führen Sie den folgenden Befehl aus, um select2 in Ihrer Rails-Anwendung zu installieren. Zu diesem Zeitpunkt werden nicht nur select2, sondern auch jQuery (und popper.js) installiert, die für die Installation von select2 und bootstrap, dem UI-Teil von select2, erforderlich sind.

$ yarn add jquery
$ yarn add popper.js
$ yarn add bootstrap
$ yarn add select2

2. Verwenden Sie jQuery / popper.js für Rails

Stellen Sie die Rails-Anwendung "webpack / environment.js" so ein, dass jQuery aus einer beliebigen Rails-Datei aufgerufen werden kann.

config/webpack/environment.js


const { environment } = require('@rails/webpacker')

//So verwenden Sie jQuery und Bootstrap JS
const webpack = require('webpack')
environment.plugins.prepend(
    'Provide',
    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        Popper: 'popper.js'
    })
)
module.exports = environment

Fügen Sie außerdem JQuery zum Manifest "packs / application.js" hinzu.

app/javascript/packs/application.js


require("jquery")

3. Konfigurieren Sie den Bootstrap für Rails.

Nehmen Sie die folgenden zwei Einstellungen vor, damit Bootstrap in Rails-Anwendungen verwendet werden kann.

app/javascript/packs/application.js


import 'bootstrap';
import '../stylesheets/application';

app/javascript/stylesheets/application.scss


@import '~bootstrap/scss/bootstrap';

4. Stellen Sie die erb-Datei auf Webpacker ein.

In Webpacker installierter Bootstrap für alle View-Dateien der Rails-Anwendung ・ Stellen Sie die ursprünglichen Layouts / application.html.erb ein, damit jQuery verwendet werden kann.

app/views/layouts/application.html.erb


<head>
<%= stylesheet_pack_tag "application", media: "all" %>
<%= javascript_pack_tag 'application' %>
</head>

5. Definieren Sie selectbox auf erb und beschreiben Sie in der JS-Datei, ob select2 verwendet werden soll.

Definieren Sie ein Auswahlfeld, das im Erb der Anwendung mehrere Auswahlen vornimmt. Wenn select_tag zu diesem Zeitpunkt als Option auf "multiple: true" gesetzt ist, wird es zu einer Auswahlbox, die mehrfach ausgewählt werden kann.

Schreiben Sie dann in die JS-Datei, die der erb-Datei entspricht, so dass die entsprechende Auswahlbox select2 verwendet.

app/views/test.html.erb


<%= javascript_pack_tag 'test' %>
<%= select_tag('animal', options_for_select([['Inu', 'dog'], ['Katze', 'cat'], ['Tori', 'bird'], ['Ushi', 'cow'], ['Schlange', 'snake']]), class: "form-control", multiple: true) %>

app/javascript/packs/test.js


$(function () {
    $('#animal').select2();
});

6. Abgeschlossen! !!

image.png

Bonus: Verwenden Sie die Option select2

In select2 gibt es verschiedene Optionen. → select2 Options Diese Optionen können mit jQuery festgelegt werden. Das Folgende ist ein Beispiel für Optionseinstellungen.

app/javascript/packs/test.js


$(function () {
    $('#animal').select2({
        width: 'resolve' //Ändern Sie die Breite dynamisch entsprechend der Seitengröße.
        theme: "classic" //Wechseln Sie zur klassischen Benutzeroberfläche.
        debug: true //Geben Sie eine Debug-Nachricht an die Browserkonsole aus.
    });
});

abschließend

Ich bin der Meinung, dass die Einführung von select2 durch die Verwendung von Garn einfacher geworden ist. Da ich das interne Verhalten von select2 jedoch oft nicht verstehe, möchte ich mein Verständnis vertiefen.

Recommended Posts

So installieren Sie die JavaScript-Bibliothek "select2", mit der mehrere Auswahlen von selectbox in Rails 6.0 in Mode kommen
So installieren Sie Swiper in Rails
[Webpacker] Zusammenfassung der Installation von Bootstrap und jQuery in Rails 6.0
Zusammenfassung der Auswahl von Elementen in Selen
[Rails] Verwendung von Auswahlfeldern in Ransack
Verwendung von JQuery in Rails 6 js.erb
[Rails] So laden Sie JavaScript in einer bestimmten Ansicht
Installieren Sie mehrere Senden-Schaltflächen in der Rails-Ansicht, um den Wert der gedrückten Schaltfläche abzurufen
Super einfach in 2 Schritten! So installieren Sie devise! !! (Schienen 5 Version)
[Rails] So installieren Sie simple_calendar
[Rails] So installieren Sie reCAPTCHA
So löschen Sie große Datenmengen in Rails und Bedenken
So installieren Sie Bootstrap in Ruby
[Rails] So installieren Sie ImageMagick (RMajick)
[Rails] So installieren Sie Font Awesome
So installieren Sie jQuery in Rails 6
So implementieren Sie eine Diashow mit Slick in Rails (einzeln und mehrfach nacheinander)
So implementieren Sie Suchfunktionen in Rails
Wie man Variablen benennt 7 Auswahl von Unbehagen
So fügen Sie ein Video in Rails ein
Verwendung von MySQL im Rails-Tutorial
[Rails] So konfigurieren Sie das Routing in Ressourcen
So implementieren Sie Ranking-Funktionen in Rails
So veröffentlichen Sie eine Bibliothek in jCenter
Verwendung von credentials.yml.enc aus Rails 5.2
[Schienen] So registrieren Sie mehrere Datensätze in der Zwischentabelle mit einer Zuordnung von vielen zu vielen
So beheben Sie Fehler, die beim Integrationstest "Ruby on Rails" auftreten
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
So installieren Sie Titan 2D (v4.2.0) in einer virtuellen Umgebung
Wie man Rails allgemein ins Japanische übersetzt
So trennen Sie .scss nach Controller in Rails
So fügen Sie die html.erb-Klasse in Rails bedingt hinzu
[Rails] So laden Sie mehrere Bilder mit Carrierwave hoch
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
So implementieren Sie eine ähnliche Funktion in Rails
So erstellen Sie einfach ein Pulldown mit Rails
Wie installiere ich Oracle JDK 1.8 in Ubuntu 18.04 LTS?
So definieren Sie mehrere orm.xml in Spring4, JPA2.1
So geben Sie den JavaScript-Index für die Anweisung an
[Rails] Verwendung von PostgreSQL in einer Vagrant-Umgebung
So überprüfen Sie Rails-Befehle im Terminal
[Rails] Durchsuchen von Spalten verwandter Modelle (Eltern und Kinder) in Ransack
Umgang mit Fehlern in Rails s konnte keine JavaScript-Laufzeit finden.
[Rails] So zeigen Sie die Wettervorhersage der registrierten Adresse auf Japanisch mit OpenWeatherMap an