Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Add javascript variables and objects to rails projects without ugly js-erb stuffed in views.
Ruby
Tree: 7603cbcd27

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
tasks
test
MIT-LICENSE
README
Rakefile
init.rb
install.rb
uninstall.rb

README

Jsvars
======
This rails plugin will hide the messiness of passing variables from rails into javascript. It will automatically add the js needed to create a variable you define in rails, or add variables to objects.


Install
======
Requires Json (require 'json')

./script/plugin install git://github.com/ejschmitt/jsvars.git


Example
=======

in your controller:
jsvars[:loginPath] = login_path
    - Will create a global variable in the JS window object named 'loginPath' with the value you assigned.

jsvars[:myObject] = {:title => "My Page", :email => "me@example.com"}
    - Adds the object variables that can be used as myObject.title & myObject.email in the view javascipt.
    - This will add the object "myObject" if it does not exist, if it already does, only the variables will be added to the already existing object.

Example of extending an object:
In controller:
    jsvars[:login] = {:path => '/login'}
    
in view:
<script>
    var login = {
        loginFuntion: function () {
            // ....
        },
        specialVar: "My special Var"    
    };
</script>

in JS:
    login.loginFunction = function()
    login.specialVar = 'My special Var'
    login.path = '/login'
    
Getting the rails environment in javascript for all pages 
In ApplicationController:
    before_filter :set_js_env
    
    def set_js_env
        jsvars[:railsEnv] = RAILS_ENV
    end
    
In JS
    railsEnv = "development"
    
    
What this solves
=======
This solves the mess of stuff like this:

<script>
    var loginPath = '<%= login_path %>';
</script>
(requiring the js to be left in an .html.erb file, or a .js.erb file)

to simple adding:
    jsvars[:loginPath] = login_path
to the controller and allowing all js to be kept in .js files out of the html.
This can get especially messy with objects with a few rails defines attributes.



Something went wrong with that request. Please try again.