【问题标题】:issues with jquery-select2 and rails form validation errorjquery-select2 和 rails 表单验证错误的问题
【发布时间】:2013-12-28 18:03:26
【问题描述】:

我在rails 表单上使用select2 jQuery 插件来对多选字段进行自动完成。如果页面上没有验证错误,一切正常。如果存在验证错误(与此元素无关),则 javascript 部分将获取一个空元素并在 JSON.parse 调用上失败。

但是使用 chrome-tools 检查显示表单数据在服务下具有正确的信息

services:[{"id":93,"text":"Old School"},{"id":94,"text":"Gels"}],93,94

这里是视图sn-p

<%= f.label :services, "Services" %>
              <input name="services" type='hidden' id='services' data-values='<%= @services %>' value='<%= @selected_services %>' style="width: 100%"/>

Javascript 看起来像这样。

var initSel = function (element, callback) {
console.log("intiSel data BRFORE json parse", $(element).val());
try {
  var data = JSON.parse($(element).val());
  callback(data);
  console.log("intiSel data AFTER json parse", data);
} catch (e) {
  console.error("Parsing error:", e);
}

}

$(function() {
  $("#services").select2({
    initSelection: initSel,
    createSearchChoice: function(term, data) {
      if ( $(data).filter(function() {
        return this.text.localeCompare(term)===0;
      }).length===0) {return {id:term, text:term};}
    },
    multiple: true,
    data: function (){
      var data = $('#services').data('values');
      return {results:data};
    }
  });
});

【问题讨论】:

    标签: javascript jquery ruby-on-rails jquery-select2 select2-rails


    【解决方案1】:

    我遇到了同样的问题,在验证错误后 select2 输入字段无法加载数据。

    我不确定它是否会对您的情况有所帮助,但它可以帮助其他堆栈用户在验证后出现 select2 错误。

    在我的情况下,错误来自控制器。我使用 before_action 过滤器来获取变量以准备 select2 输入字段的选项或数据。

    我意识到我在过滤器中遗漏了一些操作,因此不再生成变量。

    class MyController < ApplicationController
      before_action :prepare_data, only: [:edit, :update, :new, :create] #now I had all my actions not only edit and new for instance.
    
      private 
    
      def prepare_data
       @my_var_for_data_select2 = User.all.collect.collect{|u| u.username}
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2017-08-29
      • 1970-01-01
      相关资源
      最近更新 更多