Edifice

Edifice.js is a rails gem for integrating your JS + CSS more closely with your Rails 3 workflow. There are two closely related gems--edifice-forms and edifice-widgets--which do not rely on, but complement it well.

Installation

To install, simply add to your Gemfile:

gem 'edifice'

Page Specific CSS

Add this to your body tag:

<body class="<%= edifice_body_classes %>">

And you are now free to namespace your CSS like so:

.c_users.v_show h1 {
  background-color: red;
}

Of course this namespacing works best with a CSS-preprocessor like SCSS:

.c_users.v_show {
  h1 {
    background-color: red;
  }
  p {
    margin-bottom: 20px;
  }
}

The c_ part will be set to the path of, and the v_ part to the name of the view that has been rendered by rails. We also set l_NAME to the name of the layout rendered, so you can write layout specific CSS with ease.

Page Specific Javascript

For a simple way to write page specific javascript, include edifice in your application.js:

/*
 *= require edifice
 */

Include the edifice meta tags in your header:

<head>
  <%= edifice_meta_tags %>
</head>

Edifice expects you to create a simple JS object that will be called when you page loads (either directly or via AJAX/PJAX), like so:

window.usersShow = {
  onReady = function() {
    alert("The users#show page has reached the DomContentLoaded state");
  }
}

Alternatively you could define onLoad (which fires on window.load), or nothing at all, if you like. We're easy.

License

Edifice is crafted by Percolate Studio and released under the MIT license