public
Description: use named routes in your JavaScript
Clone URL: git://github.com/bwyrosdick/less-js-routes.git
commit  b9da2e08295665c8555012312688509bef84faf4
tree    d8d16a8650ef29e055036777459efdf94bf76e20
parent  0a598453152a2710c018f267ecc3e40015e60ecf
name age message
file MIT-LICENSE Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
file README Tue May 20 07:51:35 -0700 2008 Params can be a pre-formatted string or json ob... [anthonycrumley]
file Rakefile Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
file init.rb Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
file install.rb Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
directory lib/ Tue May 20 07:51:35 -0700 2008 Params can be a pre-formatted string or json ob... [anthonycrumley]
directory tasks/ Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
directory test/ Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
file uninstall.rb Thu May 08 12:59:46 -0700 2008 first commit [bwyrosdick]
README
LessJsRoutes
============

Have you ever wanted to use named routes in your JavaScript? So have I. Now you can.

LessJsRoutes will generate a javascript file with functions that give you the path to the route
and functions that will call these routes using ajax (uses jQuery or Prototype).





Installation
============
1. ./script/plugin install http://lessjsroutes.googlecode.com/svn/trunk/less_js_routes
2. Add 'less_routes' to your javascript_include tag
3. Either:

  RAKE TASK:
    rake less:js:routes
    will create public/javascripts/less_routes.js

  AND/OR
    
  ENVIRONMENT:
    add 
    Less::JsRoutes.generate!
    to your environment file. This will auto generate less_routes.js every time your rails app is started.


4. There is no number 4.



Usage
=====
In your routes file:
  map.resources :users do |user|
    user.resources :profiles
  end

In your layout:
  <%= javascript_include_tag :defaults, 'less_routes' %>
  
In your applicaiton.js (or any script block):
  users_path() => '/users'
  users_path({page: 1}) => '/users?page=1'
  users_ajax() => GET '/users'
  user_path(1) => '/users/1'
  user_ajax(1) => GET '/user/1'
  user_profile_path(1,5) => '/users/1/profiles/5'
  user_profile_ajax(1,5) => GET '/users/1/profiles/5'
  user_ajax('post', {name: 'fonzie', password: 'cool', password_confirmation: 'cool'}) => POST '/users'
  change_password_user_ajax('put', {password: 'cool', new_password: '2cool', password_confirmation: '2cool'}) => PUT 
  '/users'
  
  _path functions return the path and take the proper variables, :id, :nested_id, :format, etc.  A json object or 
  pre-formatted string of querystring parameters can be passed as the last optional parameter.
  _ajax functions return the server response of the ajax call. The parameters are (1) the proper variable, :id, 
  :nested_id, :format, :etc, (2) the http verb (get, post, put, delete) (get is default), an object or pre-formatted 
  string of parameters, an object of any jQuery.ajax options that should be added to the ajax call.
  



Notes
=====
* Less Js Routes will use jQuery if available and Prototype if it is not.
* If a formatted ajax function is called with a json format, the json string will be converted and returned as a 
JavaScript object, not a string.
* This hasn't had a lot of testing in the wild, so please report any bugs you find to 
http://code.google.com/p/lessjsroutes/issues/entry.


Brought to you with love, from Less Everything (http://lesseverything.com)
  
Copyright (c) 2007 Less Everything, Inc., released under the MIT license