with selectize change bootstrap alternative javascript jquery ruby-on-rails gem selectize.js

javascript - bootstrap - selectize on change



TypeError: $(...).selectize no es una funciĆ³n (3)

Creo que tienes un problema de dependencia de jQuery causado por la gema jQuery-rails. Prueba esto:

1) Comenta esta línea en tu Gemfile

gem ''coffee-rails'', ''~> 4.0.1'' #gem ''jquery-rails'', ''~> 2.3.0'' gem ''turbolinks'', ''~> 1.1.1''

2) Ejecute la bundle install

3) Descargue esta versión de jQuery y colóquela en su carpeta vendor/assets/javascript .

EDITAR

Para migrar a la versión no gema, coloque estos archivos en las siguientes rutas:

  • proveedor / assets / stylesheets / selectize.css
  • proveedor / assets / javascript / selectize.min.js
  • proveedor / assets / javascript / sifter.js
  • proveedor / assets / javascript / microplugin.js

Instalé la gema "selectize-rails" en mi aplicación Rails, y estoy intentando que funcione. Sigo recibiendo este error en mi consola web:

TypeError: $(...).selectize is not a function

y no pasa nada en el navegador. Aquí está el código que tengo hasta ahora, siguiendo el ejemplo de "Contactos por correo electrónico" de esta página: http://brianreavis.github.io/selectize.js/

views / emails / new.html.erb

<script type="text/javascript"> $(document).ready(function() { console.log( typeof $.fn.selectize === ''function''); // true console.log( $(''#select-to'').length === 1 ); // true var REGEX_EMAIL = ''([a-z0-9!#$%&/'*+/=?^_`{|}~-]+(?:/.[a-z0-9!#$%&/'*+/=?^_`{|}~-]+)*@'' + ''(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)''; $(''#select-to'').selectize({ persist: false, maxItems: null, valueField: ''email'', labelField: ''name'', searchField: [''name'', ''email''], options: [ {email: ''[email protected]'', name: ''Brian Reavis''}, {email: ''[email protected]'', name: ''Nikola Tesla''}, {email: ''[email protected]''} ], render: { item: function(item, escape) { return ''<div>'' + (item.name ? ''<span class="name">'' + escape(item.name) + ''</span>'' : '''') + (item.email ? ''<span class="email">'' + escape(item.email) + ''</span>'' : '''') + ''</div>''; }, option: function(item, escape) { var label = item.name || item.email; var caption = item.name ? item.email : null; return ''<div>'' + ''<span class="label">'' + escape(label) + ''</span>'' + (caption ? ''<span class="caption">'' + escape(caption) + ''</span>'' : '''') + ''</div>''; } }, createFilter: function(input) { var match, regex; // [email protected] regex = new RegExp(''^'' + REGEX_EMAIL + ''$'', ''i''); match = input.match(regex); if (match) return !this.options.hasOwnProperty(match[0]); // name <[email protected]> regex = new RegExp(''^([^<]*)/<'' + REGEX_EMAIL + ''/>$'', ''i''); match = input.match(regex); if (match) return !this.options.hasOwnProperty(match[2]); return false; }, create: function(input) { if ((new RegExp(''^'' + REGEX_EMAIL + ''$'', ''i'')).test(input)) { return {email: input}; } var match = input.match(new RegExp(''^([^<]*)/<'' + REGEX_EMAIL + ''/>$'', ''i'')); if (match) { return { email : match[2], name : $.trim(match[1]) }; } alert(''Invalid email address.''); return false; } }); }); </script>

application.html.erb

<head> <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> <%= csrf_meta_tags %> <%= javascript_include_tag "jquery.endless-scroll" %> <%= yield(:head) %> </head>

javascripts / application.js

//= require jquery //= require jquery_ujs //= require jquery-ui //= require bootstrap //= require turbolinks //= require selectize //= require_tree .

Selectize.js parece estar incluido en mi aplicación: este es el <head> de la fuente de mi página :

<!DOCTYPE html> <html> <head> <!--...--> <link href="/assets/selectize.css?body=1" media="screen" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/custom.css?body=1" media="all" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/jquery-ui.css?body=1" media="all" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/jquery-ui.structure.css?body=1" media="all" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/jquery-ui.theme.css?body=1" media="all" rel="stylesheet" /> <link data-turbolinks-track="true" href="/assets/users.css?body=1" media="all" rel="stylesheet" /> <script data-turbolinks-track="true" src="/assets/jquery.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/jquery_ujs.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/jquery-ui.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/bootstrap.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/turbolinks.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/sifter.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/microplugin.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/selectize.min.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/jquery.color.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/jquery.endless-scroll.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/users.js?body=1"></script> <script data-turbolinks-track="true" src="/assets/application.js?body=1"></script> <meta content="authenticity_token" name="csrf-param" /> <meta content="KjspKaF93jfFsjf8jsoaisHSf=" name="csrf-token" /> </head>

Gemfile :

source ''https://rubygems.org'' ruby ''2.0.0'' gem ''rails'', ''4.0.10'' gem ''bootstrap-sass'', ''~> 2.3.2.0'' gem ''sprockets'', ''~> 2.12'' gem ''chosen-rails'' gem ''bcrypt'', ''~> 3.1.7'' gem ''therubyracer'' gem ''sass-rails'', ''4.0.5'' gem ''uglifier'', ''~> 2.1.1'' gem ''coffee-rails'', ''~> 4.0.1'' gem ''jquery-rails'', ''~> 2.3.0'' gem ''turbolinks'', ''~> 1.1.1'' gem ''jbuilder'', ''~> 1.0.2'' gem ''libv8'', ''3.16.14.7'' gem ''yaml_db_improved'' gem ''selectize-rails'' group :development, :test do gem ''sqlite3'', ''~> 1.3.8'' gem ''rspec-rails'', ''~> 2.13.1'' end group :test do gem ''selenium-webdriver'', ''~> 2.35.1'' gem ''capybara'', ''~> 2.1.0'' end group :doc do gem ''sdoc'', ''~> 0.3.20'', require: false end group :production do gem ''rails_12factor'', ''~> 0.0.2'' end

config / environments / production.rb :

Website::Application.configure do config.cache_classes = true config.eager_load = true config.consider_all_requests_local = false config.action_controller.perform_caching = true config.serve_static_assets = false config.assets.js_compressor = :uglifier config.assets.compile = false config.assets.digest = true config.assets.version = ''1.0'' config.log_level = :info config.i18n.fallbacks = true config.active_support.deprecation = :notify config.log_formatter = ::Logger::Formatter.new end

config / environments / development.rb :

Website::Application.configure do config.cache_classes = false config.eager_load = false config.consider_all_requests_local = true config.action_controller.perform_caching = false config.action_mailer.raise_delivery_errors = false config.active_support.deprecation = :log config.active_record.migration_error = :page_load config.assets.debug = true end

config / application.rb :

require File.expand_path(''../boot'', __FILE__) require "active_record/railtie" require "action_controller/railtie" require "action_mailer/railtie" require "sprockets/railtie" Bundler.require(*Rails.groups) module Website class Application < Rails::Application config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) end end

¿Alguien que ha usado Selectize sabe lo que me podría estar perdiendo?

ACTUALIZAR:

Se vuelve más raro: el código propenso a errores comenzó a funcionar aleatoriamente, pero luego se rompió de nuevo al actualizar


Había resuelto el mismo problema al eliminar jQuery include, que se incluyó dos veces. Hay una nota sobre eso en los comentarios, pero está colapsado y me di cuenta de eso. Publicar esto como respuesta para que las personas lo noten.


Para mí, el problema era que mi código de aplicación se estaba incluyendo antes de selectize.js . Agregar //= require selectize app/assets/javascripts/application.js antes de //= require_tree . arreglado.

//= require jquery //= require jquery_ujs //= require turbolinks //= require selectize //= require_tree .