2013-11-30 3 views
1

У меня есть данные, поступающие с sunspot на select2 (показан метод list_styles контроллера). Я могу искать и сохранять несколько категорий с select2 в новой форме поставщика без каких-либо проблем, однако, когда я пытаюсь загрузить данные из базы данных в форме поставщика редактирования, она не появляется. Пробовал метод initselection и проверил документацию/stackoverflow для метода initselection, который подходит для моего приложения, но не смог его отсортировать. Создал новый метод контроллера, называемый list_categories, без успеха. Может ли кто-нибудь прокомментировать меня по правильному пути? Спасибо.Rails Select2 загружает данные из базы данных

new provider edit provider Jquery

$('#provider_category').select2({ 
      minimumInputLength: 3, 
      multiple: true, 
      ajax: { 
       url: "/categories/list_styles", 
       dataType: 'json', 
       quietMillis: 100, 
       data: function (term, page) { 
       return { 
        q: term, 
        page_limit: 10, 
        page: page, 
       }; 
       }, 
      results: function (data) { 
       var hashtable={}; 
       var results = \[\]; 
       $.each(data, function(index, item){ 
       if (hashtable\[item.parent\]===undefined) { 
        hashtable\[item.parent\]={text:item.parent, children:\[\]}; 
        results.push(hashtable\[item.parent\]); 
       } 
       hashtable\[item.parent\].children.push({id:item._id,text:item.title}); 
      }); 
       return { 
        results: results 
       }; 
      }, 
      initSelection: function(element, callback) { 
       return $.ajax({ 
        type: "get", 
        url: "/categories/list_categories", 
        dataType: 'json', 
        data: function (term, page) { 
         return { 
          q: term, 
          page_limit: 10, 
          page: page, 
         }; 
        }, 
        success: function(data){ 

        } 
       }).done(function(data) { 
        //console.log(data); 
        return callback(data); 
       }); 

      } 
      } 
      }); 

Контроллер класс CategoriesController < ApplicationController respond_to: HTML,:

JSON
def list_styles 
     search = Category.search do 
     fulltext params[:q] 
     end 
     search = Category.search { keywords params[:q]; paginate :page => params[:page], :per_page => params[:page_limit] } 
     @categories = search.results  
     respond_with @categories 
    end 

    def list_categories 
     search = Provider.find "5299b5dcdd506322c4000091" 
     @category = search.category 
     x = Category.find @category 
     search = Category.search { keywords x.title; paginate :page => params[:page], :per_page => params[:page_limit] } 
     @categories = search.results 
     respond_with @categories 
    end 
end 

ответ

2

Вот так оно и есть ребенок!

JQuery

}, 
       initSelection : function (element, callback) { 
       var data1 = []; 
       jQuery(element.val().split(",")).each(function() { 
        $.ajax({ 
         type: "get", 
         url: "/providers/list_categories", 
         async: false, 
         dataType: 'json', 
         data: { id: $("#provider_id").val()}, 
         success: function(category){ 
         $.each(category, function(i, obj) { 
          data1.push({id: this._id, text: this.title}); 
          }); 
         } 

        }); 
       }); 
       callback(data1); 
       } 

      }); 

Контроллер илит

def list_categories 
    @provider = Provider.find params[:id] 
    arr = @provider.category.split(",") 
    @category = Category.where(:_id.in => arr) 
    respond_to do |format| 
    format.json { render :json => @category} 
    end    
end 
Смежные вопросы