Select2 JS lib не работает в приложении Rails - PullRequest
0 голосов
/ 24 августа 2018

Мне дали это приложение на Rails, которое использует библиотеку JS select2 и не могу понять, почему оно не стилизует мой список выбора. Он работает в производстве.

Я создал промежуточный сервер из снимка рабочего сервера.

Я пробежал rake assets:clobber && rake assets:precompile, где это успешно. Я проверил скомпилированные файлы application.js и application.css и код и стиль JS в них.

Я могу запустить $(".classIwant").select2(); в консоли, и он стилизует список выбора, но ничего не делает, когда я выбираю опцию.

Я также получаю эту ошибку после запуска $(".classIwant").select2(); в консоли:

[Нарушение] Принудительное перекомпонование при выполнении JavaScript заняло 49 мс

Пожалуйста, прости мое невежество, так как я впервые работаю с этой библиотекой JS. Любая помощь приветствуется. Заранее спасибо.

ОБНОВЛЕНИЕ № 1: Когда я копирую приведенный ниже код в консоль и вручную запускаю App.init();, это работает. Почему страница не загружает это.

(function() {
  window.App || (window.App = {});

  App.init = function() {
    $(".classIwant").select2();
    $('#search').on("keyup", function() {
      return searchTable($(this).val());
    });
    $('#search-list').on("keyup", function() {
      return searchList($(this).val());
    });
    $("#the_id").on('change', function(e) {
      return $(this).parent().submit();
    });
    return $('#preloader').delay(200).fadeOut();
  };

  $(document).on("page:change", function() {
    return App.init();
  });

  $(window).on("load", function() {
    $('#status').fadeOut();
    return $('#preloader').delay(200).fadeOut();
  });

}).call(this);

ОБНОВЛЕНИЕ № 2: Это код на производство. Это немного по-другому. Я не уверен, что заставляет компилятор минимизировать производственный код, а также компилировать его по-другому. Я использовал красивую печать в консоли, чтобы увидеть ее немного лучше Есть идеи?

function() {
    window.App || (window.App = {}),
    App.init = function() {
        return $(".classIwant").select2(),
        $("#search").on("keyup", function() {
            return searchTable($(this).val())
        }),
        $("#search-list").on("keyup", function() {
            return searchList($(this).val())
        }),
        $("#the_id").on("change", function() {
            return $(this).parent().submit()
        }),
        $("#preloader").delay(200).fadeOut()
    }
    ,
    $(document).on("page:change", function() {
        return App.init()
    }),
    $(window).on("load", function() {
        return $("#status").fadeOut(),
        $("#preloader").delay(200).fadeOut()
    })
}
.call(this),

1 Ответ

0 голосов
/ 07 сентября 2018

Я обнаружил, что проблема в разных версиях ruby, bundler и gem.Я не уверен, какой драгоценный камень вызывал проблему, но я исправил проблему с помощью следующих шагов.Ваша среда может немного отличаться, но это должно привести вас на правильный путь:

  1. Скопировано с рабочего сервера, строка за строкой, Gemfile и Gemfile.lock на мою локальную машину
  2. На моем локальном компьютере я установил ту же версию ruby ​​(2.2.1), что и производственную, используя rvm.
  3. Установил бандлер 1.14.0, используя gem install bundler -v 1.14.0 (1.14.0 - это то, что имеет производственный серверна нем.)
  4. Ран bundle _1.14.0_ install, это не удалось, потому что локальный mysql был новым
  5. Поскольку моя локальная версия mysql была новой, мне пришлось понизить ее, используя homebrew.См. Несколько версий MySQL с Homebrew
  6. Снова bundle _1.14.0_ install Снова, успех.
  7. Поскольку Gem-файлы теперь изменились, я зафиксировал эти изменения
  8. Я gitвытащил эти изменения на мой сервер
  9. Версия Ruby промежуточного сервера не соответствовала рабочей версии 2.2.1
  10. Пришлось установить rvm на промежуточный сервер, к счастью, я использую Ubuntu, поэтому я просто использовал эти инструкции RVM-пакет для Ubuntu .Обязательно следуйте выводу терминала.
  11. Установлен ruby ​​через rvm install 2.2.1
  12. Запуск bundle install на сервере, успех.Все драгоценные камни соответствуют производству.
  13. Ран rake assets:clobber && rake assets:precompile на промежуточном сервере.
  14. Перезапущенный веб-сервер.
...