8.3. Writing JavaScript in Ruby

The remote tag helper methods are easy to use and well suited to the basic task of updating the HTML inside a particular element on the page. That's a rather limited subset of what you can do with JavaScript, however. You'll often want to update more than one spot on the page, or do JavaScript manipulation on an element based on changing its style rather than its text. Although you could do all of that using the one of the various callback features to embed JavaScript into various nooks and crannies of the link_to_remote, that can be awkward. The Rails facility for writing more complex JavaScript effcts is an RJS template, which allows you to write Ruby code that is converted to JavaScript commands.

It's important to start the discussion of RJS with the disclaimer that although RJS is a nifty way to get a lot of JavaScript functionality into your application, it's in no way a substitute for actually writing JavaScript — especially if you want to try something really new and unique. Also, this book isn't about JavaScript per se, so let's focus on what you can accomplish with Ruby and Rails.

RJS code can be injected into your Rails page in one of two ways. The originally intended behavior was that the code would be placed in a view similar to an html.erb view, with the extension .rjs. However, over time, because many RJS invocations are pretty short and because they don't really behave like the HTML templates, it's more and more common to see them ...

Get Professional Ruby on Rails™ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.