ExtjsRenderer

Rails 3 Renderer to send JSON compatible with Sencha Extjs 3+

Usage

ActiveRecord Relations

JSON root defaults to resource:

Controller action:

def index
	@items = Item.order('name')
	respond_with @items do |format|
		format.json { render :extjs => @items }
	end
end

Output:

{"total":1,"item":[{"id":1,"name":"widget"}]}

Custom JSON root and to_json params:

Controller action:

def index
	@items = Item.order('name')
	respond_with @items do |format|
		format.json { render :extjs => @items, :root => "product", :only => [:name], :methods => [:custom] }
	end
end

Or

def index
	@items = Item.order('name')
	respond_with @items do |format|
		format.json { render :extjs => @items, :root => "product", :except => [:id], :methods => [:custom] }
	end
end

Output:

{"total":1,"product":[{"name":"widget","custom":"custom method output"}]}

Single Resource

Root defaults to 'data' or :root => 'custom':

Controller action:

	def edit
		@item = Item.find(params[:id])
		respond_with @items do |format|
			format.json { render :extjs => @item, :only => [:name], :methods => [:custom] }
		end
	end

Output:

{"success":true,"data":[{"name":"widget","custom":"custom method output"}]}