簡體   English   中英

jquery-select2和rails表單驗證錯誤的問題

[英]issues with jquery-select2 and rails form validation error

我在rails表單上使用select2 jQuery插件在多選字段上進行自動填充。 如果頁面上沒有驗證錯誤,則一切正常。 如果存在驗證錯誤(與該元素無關),則javascript部分將獲得一個空元素,並在JSON.parse調用上失敗。

但是,使用chrome-tools進行的檢查顯示,表單數據在服務下具有正確的信息

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

這是視圖片段

<%= 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};
    }
  });
});

我遇到了同樣的問題,驗證錯誤后,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM