//= require selectize $(document).ready(function () { var selectizeCallback = null; $(".selectize_with_add").each(function(i, item) { $(item).selectize({ create: function(input, callback) { selectizeCallback = callback; $("." + $(item).data('model') + "-modal").modal(); $("#" + $(item).data('model') + "_name").val(input); } }); $("." + $(item).data('model') + "-modal").on("hide.bs.modal", function(e) { if (selectizeCallback != null) { selectizeCallback(); selecitzeCallback = null; } $("#new_" + $(item).data('model') + "").trigger("reset"); $("#new_" + $(item).data('model') + " select").val(null).trigger('change'); $.rails.enableFormElements($("#new_" + $(item).data('model') + "")); }); $("#new_" + $(item).data('model')).on("submit", function(e) { e.preventDefault(); $("#new_" + $(item).data('model')).find('.has-error').removeClass('has-error'); $("#new_" + $(item).data('model')).find('.help-block').text(""); $.ajax({ method: "POST", dataType: "json", url: $(this).attr("action"), data: $(this).serialize(), success: function(response) { selectizeCallback({value: response.id, text: response.name}); selectizeCallback = null; $("." + $(item).data('model') + "-modal").modal('toggle'); }, error: function(response) { $.each(response.responseJSON, function(key, value) { $("#new_" + $(item).data('model')).find("." + $(item).data('model') + '_' + key).addClass('has-error'); if (!($("#new_" + $(item).data('model') + " ." + $(item).data('model') + '_' + key).find('.help-block').length)) { $("#new_" + $(item).data('model')).find("." + $(item).data('model') + '_' + key).append("
"); } $("#new_" + $(item).data('model')).find("." + $(item).data('model') + '_' + key).find('.help-block').text(value); }); $.rails.enableFormElements($("#new_" + $(item).data('model') + "")); } }); }); }); $(".selectize_with_add_without_modal").each(function(i, item) { $(item).selectize({ create: function(input, callback) { $(item).parent().removeClass('has-error'); $(item).parent().find('.help-block').text(""); selectizeCallback = callback; data = {}; data[$(item).data('model')] = {}; data[$(item).data('model')][$(item).data('field')] = input; $.ajax({ method: "POST", dataType: "json", url: "/" + $(item).data('pluralized'), data: data, success: function(response) { selectizeCallback({value: response.id, text: response.name}); }, error: function(response) { $(item).parent().addClass('has-error'); if (!( $(item).parent().find('.help-block').length)) { $(item).parent().append(""); } $(item).parent().find('.help-block').text("Valor já existente: " + input); selectizeCallback(); } }); selectizeCallback = callback; } }); }); });