2011-02-14 64 views
0

我想使用slickgrid在轨道应用程序上有一个网格。如何在轨道上使用红宝石加载slickgrid

我认为最初的问题是没有最佳做法,在哪里或如何从sql数据库加载数据网格。

在* .html.erb文件中,我是否使用javascript并嵌入了ruby代码(甚至有可能)?

有人在那里使用slickgrid,或任何可比的,在轨道应用程序上的红宝石?

任何简单的编码示例都非常感谢!

回答

1

我用this post来动态生成一个JavaScript文件。它看起来像:

var columns = ... 
var options = ... 

$(function() { 
    var data = []; 
    data[0] = {...}; 
    data[1] = {...}; 
    data[2] = {...}; 
    ... 
    var grid = new Slick.Grid($("#my_grid"), data, columns, options); 
}); 

我能够从数据库加载数据到SlickGrid。但是,目前我确实遇到了使用columnpicker的hang problem(我希望你不需要它)。

1

有几种方法可以将数据导入到SlickGrid中。最简单的可能是AJAX调用。如果数据是静态的,你可以将它嵌入到页面中,但这可能比仅仅使用AJAX做的更有用也更困难。

您需要的第一件事是您可以访问的路径,它会将您的数据返回给浏览器,最好使用JSON格式,因此很容易在客户端处理。

假设您要返回的数据只是一个简单的集合,我们将使用Users列表的示例。

class UsersController < ApplicationController 
    def index 
    @users = User.all 

    respond_to { |format| 
     format.json { render :json => @users } 
    } 

    end 
end 

我们假设你可以在URL http://example.com/users/

得到这个现在,我们有办法来获取数据,我们可以拉在使用JavaScript在浏览器端的数据。我的例子是要使用jQuery,但任何JavaScript框架将有一个简单的方法来进行AJAX调用。

请注意,SlickGrid需要一个地方放置您的数据。所以我会假设你已经在你的HTML这样一行:<div id="slickGrid"></div>

# We need to wait for the DOM to be loaded so we wrap our AJAX call in a 
# jQuery call that's the equivalent of document.ready() 
jQuery(function() { 

    # getJSON is a jQuery convenience function for doing an AJAX call 
    # that fetches some JSON data. 
    jQuery.getJSON('http://example.com/users', function(data) { 
    grid = new Slick.Grid("#slickGrid", data, columns, options); 
    $("#slickGrid").show(); 
    }); 

}); 

你可以如何使用SlickGrid从GitHub的库例子: https://github.com/mleibman/SlickGrid/wiki/_pages

欲了解更多关于如何做AJAX调用使用jQuery这里的文档更常用的jQuery.ajax()函数: http://api.jquery.com/jQuery.ajax/

而且功能的getJSON,我专门用于: http://api.jquery.com/jQuery.getJSON/

0

我们可以在浏览器中以Json格式加载数据。所以,我用它来解析“user_data”数组。 例如。 localhost:3000/users.json

var user_data = <%= @ users.to_json.html_safe%>;