0.0
No commit activity in last 3 years
No release in over 3 years
You can create REST services to be used for Ext JS 4 in an easy manner by calling to_extjs in your models or arrays.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.0.0
~> 1.6.3
>= 0
~> 2.3.0

Runtime

~> 0.9.2
 Project Readme

extjsizable¶ ↑

This gem insert the method to_extjs into ActiveRecord and Array. Messages generated are valid to be used against Ext JS 4 (www.sencha.com/products/extjs/). Now it’s possible to generate Ext JS 3 JSON data although it’s in experimental state. It requires Rails 3.0 or latter to work properly.

ActiveRecord¶ ↑

To load a form, the data extjs expect to meet is like so:

{
  "data": { 
    "id": 1, 
    "title": "First Post",
    "body": "This is my first post.",
    "published": true, ...
   }, 
   "success": true
}

If ActiveRecord::Base.wrap_with_brackets is true then, the model name wraps all attributes:

{
  "data": { 
    "post[id]": 1, 
    "post[title]": "First Post",
    "post[body]": "This is my first post.",
    "post[published]": true, ...
   }, 
   "success": true
}

It allows to use this gem with Ext JS 3.

If ActiveRecord::Base.include_root_in_json is true then, the model name is used instead of data key:

{
  "post": { 
    "id": 1, 
    "title": "First Post",
    "body": "This is my first post.",
    "published": true, ...
   }, 
   "success": true
}

So that it is as easy as do:

@post.to_extjs

In case the model has some failures, the sentence above will return:

{
  "errors": { "title": ["Title can't be blank"] },
  "success": false 
}

Parameters accepted are the same as as_json from ActiveModel.

Array¶ ↑

When to_extjs is called from ActiveRecord (or hashes) collections, Ext JS expect to receive a structure like that:

{ 'total' : 2,
  'data' : [
     { 'id' : 1, :title : 'First Post'  },
     { 'id' : 2, :title : 'Second Post' }
   ]
}

It is generated executing

Post.all.to_extjs

Parameters accepted are the same as as_json from Array, nesting into each record.

if Array.dasherize_keys is true, then nested Hashes are plained:

{ 'total' : 2,
  'data' : [
     { 'id' : 1, 'title' : 'First Post', 'owner' : { 'name' : 'John'}  },
     { 'id' : 2, 'title' : 'Second Post', 'owner' : { 'name' : 'Frank'} }
   ]
}

, becomes to

{ 'total' : 2,
  'data' : [
     { 'id' : 1, 'title' : 'First Post', 'owner_name' : 'John' },
     { 'id' : 2, 'title' : 'Second Post', 'owner_name' : 'Frank' }
   ]
}

For now, it works in belongs_to associations. has_many requires duplication of each line when a nested Array appears. I dont think you need that.

TODO¶ ↑

  • Tests, tests, tests.…