Jsvars
Add javascript variables and objects to rails projects without ugly js-erb stuffed in views.
Install / Use
/learn @ejschmitt/JsvarsREADME
h1. 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.
h2. Install
Requires Json (require 'json')
<pre><code>./script/plugin install git://github.com/ejschmitt/jsvars.git</code></pre>h2. Examples
in your controller:
<pre><code>jsvars[:loginPath] = login_path</code></pre>- Will create a global variable in the JS window object named 'loginPath' with the value you assigned.
- 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.
- Adds the objects myObj, myMeth, myValue if they do not exist and defines the value of myObj.myMeth.myValue to myVar.
- Only undefined objects will be added, so if myObj exists but myMeth and myVal do not, they will be added to the myObj object.
Example of extending an object: In controller: <pre><code>jsvars[:login] = {:path => '/login'}</code></pre> in view:
<pre><code><script> var login = { loginFuntion: function () { // .... }, specialVar: "My special Var" }; </script></code></pre>in JS: <pre><code>login.loginFunction = function() login.specialVar = 'My special Var' login.path = '/login'</code></pre>
Getting the rails environment in javascript for all pages In ApplicationController: <pre><code>before_filter :set_js_env
def set_js_env
jsvars[:railsEnv] = RAILS_ENV
end</code></pre>
In JS <pre><code>railsEnv = "development"</code></pre>
h2. What this solves
This solves the mess of stuff like this:
<pre><code><script> var loginPath = '<%= login_path %>'; </script></code></pre>(requiring the js to be left in an .html.erb file, or a .js.erb file)
to simple adding: <pre><code>jsvars[:loginPath] = login_path</code></pre> 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.
h2. License
Copyright © 2010 Erick Schmitt, released under the MIT license.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
