JQuery UI Проблема с RoR - PullRequest
       7

JQuery UI Проблема с RoR

0 голосов
/ 26 июля 2011

Как получить список всех проектов из модели, такой как Project.all, и все находящиеся там имя файла project.name были перемещены в список в javascript, который затем распечатывается с помощью автозаполнения пользовательского интерфейса Jquery

Ссылка на автозаполнение интерфейса Jquery

$( " #tags " ).autocomplete({
            source: function(request, response){
            //pass request to server
            $.ajax({
                url: "/projects/project_list",
                dataType: "json",
                data: {
                    style: "full",
                    maxRows: 12,
                    term: request.term
                },
            minLength: 1,
            select: function( event , ui ) {
                                            log( ui.item ?
                                            ui.item.value : +  this.value );
                                            }
        });

1 Ответ

1 голос
/ 26 июля 2011

Думаю, вы, вероятно, ищете что-то вроде этого:

 def project_list  
   list=Project.all.map{|i|[i.name,i.id]}
  arr= [["No project",0]].concat(list.sort{|a,b| a[0]<=>b[0]}).to_json
  render :json =>arr
 end

Затем вам нужно вызвать этот метод изнутри js

     $("#some_input_id").autocomplete({
        source: function(request, response){
            //pass request to server
            $.ajax({
                url: "/projects/project_list",
                dataType: "json",
                data: {
                    style: "full",
                    maxRows: 12,
                    term: request.term
                },
                success: function( data ) {
#do stuff here
}
});
});

Вот относительно полный пример тогопроизводит автозаполнение списка аэропортов

   $("#airport, #station").autocomplete({
        delay: 1000,
        search: function(event,ui){
            tag = event.target.id
        },
        source: function(request, response){
            //pass request to server
            $.ajax({
                url: "/tags/"+ tag +"/list",
                dataType: "json",
                data: {
                    style: "full",
                    maxRows: 12,
                    term: request.term
                },
                success: function( data ) {
                    response( $.map( data, function( item ) {
                        if (tag == "airport"){
                            return {
                                label: item.airport.fd_name
                            }
                        }
                        else
                        {
                            return {
                                label: item.station.fd_name
                            }

                        }

                    }));
                }
            });
        },
        minLength: 2,
        open:   function( event, ui ) {
            stripe($(this));
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
    });

А вот соответствующий код контроллера:

def list
    @tags= params[:tagclass].titleize.constantize.where("fd_name ilike ? ",params[:term]+"%").order('fd_name')
    render :json =>  @tags.to_json(:only=>[:fd_code, :fd_name]), :layout=>false
  end

`

...