Skip to content

Compiling rails models directly into ajax javascript models using opal.

License

Notifications You must be signed in to change notification settings

trevorgrayson/omgjs

Repository files navigation

The Opal Model Generator (OMG)

The goal of this project is to unobtrusively make javascript objects for each desired ActiveModel implementation in a rails project. These javascript objects will allow you to run the expecting fetching, deleting, and saving methods expected as if you were in a rails environment. This project isn’t disimilar to Vienna (github.com/opal/vienna), but is trying out going a step further by not requiring the user to rewrite the objects.

Long way to go with this project, but presently if you include the omgjs gem

gem 'omgjs', :git => 'https://github.com/trevorgrayson/omgjs.git'

and reference the required javascript files in your layout:

Presuming you are using rails assets, you’re going to want to add the following lines to your application.js file.

//= require opal
//= require active_record
//= require omg

otherwise you’ll do the traditional linking in your public folder:

<script type="text/javascript" src="/javascripts/opal.js"></script>
<script type="text/javascript" src="/javascripts/active_record.js"></script>
<script type="text/javascript" src="/javascripts/omg.js"></script>

The first is Opal’s required library. The second, active_record, is the equivilent of ActiveRecord::Base in rails, and will do all the heavy lifting for these objects. Lastly, omg, will have a list of all your ActiveModels in the app/models/ directory. You will rebuild this file in development everytime you refresh your browser.

You should be able to immediately load a page and find your models under the “Opal” namespace:

<script>
  Opal.YourModelName.find(1)

  Opal.YourModelName.find('all', {conditions: 'id > 2'})

</script>

About

Compiling rails models directly into ajax javascript models using opal.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published