[ANN] REST in Place - RESTful Inplace-Editor


since the old inplace_editor plugin is pretty outdated, I decided to
write a
new one that uses a REST api and works seamlessly with RESTful rails
controllers. Its main advantage is that you don’t need ANY special
code for this to work and any custom workflows in your controllers
(authentication etc. ) apply to the inplace editor automatically.

This is my first Javascript Project, my first jQuery Project and my
first Rails
plugin, so I’d be interested in comments and/or suggestions for

REST in Place

                               /       \
                               | R.I.P.|
                               |       |
                               |       |

“REST in Place” is an AJAX Inplace-Editor that talks to RESTful
It requires absolutely no additional server-side code if your
fulfills the following REST preconditions:

  • It uses the HTTP PUT method to update a record
  • It delivers an object in XML form for requests with
    “Accept: application/xml” headers

The editor works by PUTting the updated value to the server and
GETting the
updated record afterwards to display the updated value.
That way any authentication methods or otherwise funky workflows in
controllers are used for the inplace-editors requests.

URL: http://svn.varwig.org/rails/plugins/rest_in_place/
BLOG: http://jan.varwig.org/


REST in Place needs the jQuery library to work.

Install REST in Place with

script/plugin install 


To make a piece of Text inplace-editable, wrap it into an element (a
usually) with class “rest_in_place”. The editor needs 3 pieces of
to work: a URL, an object name and the attribute name. These are
provided as

  • put attributes into the element, like this:

    <span class="rest_in_place" url="/users/1" object="user"


  • if any of these attributes is missing, DOM parents of the elemet
    are searched
    for them. That means you can write something like:

    <div object="user" url="/users/1">
      Name:  <span class="rest_in_place" attribute="name" >Johnny</


eMail: [email protected]

  • You can completely omit the url, the current documents url is
    taken then.
    With proper RESTful controllers this should always work, the url-
    is for cases when you want to edit a resource that is displayed as
    part of
    a non-RESTful webpage.

  • Rails provides the dom_id helper that constructs a dom id out of
    ActiveRecord for you. So, your HTML page may look like this:

    <div id="user_1">
      Name:  <span class="rest_in_place" attribute="name" >Johnny</


eMail: [email protected]

REST in Place recognizes dom_ids of this form and derives the object
from them, so that (with the current documents url used) you really
only need
to provide the attributes name in most cases.

!! --------
!! Note that a manually defined (in the element or in one of the
!! object always overrides dom_id recognition.
!! --------


Your routes.rb:

map.resources :users

Your app/controllers/users_controller.rb:

class UsersController < ApplicationController
  def show
    @user = User.find params[:id]
    respond_to do |type|
      type.xml {render :xml => @user.to_xml}

  def update
    @user = User.find params[:id]
    redirect_to @user, :status => :see_other

Your app/views/users/show.html.erb:

    <script type="text/javascript" src="/javascripts/

jquery-1.2.1.js" charset=“utf-8”>

ID: <%= @user.id %>

Name: <%=
@user.name %>

Why jQuery?

Why did I write this with jQuery instead of Prototype?

Frankly I never even worked with prototype and have just recently
gotten into
Javascript using jQuery. jQuery seems superior to Protoype and will
replace Prototye someday or at least get [integrated into Rails]
jRails as nicely as
Prototype so people can chose which framework they want to use.

Also, REST in Place at this stage is primarily a proof of concept.


REST in Place was written for Ruby on Rails but is usable with any
kind of
RESTful web api. Just include the rest_in_place.js in your webpage and
the instructions.

Copyright © 2007 [Jan Varwig], released under the MIT license

Whoops there goes my weekend.

I made a version for Prototype tonight that behaves exactly like the
jQuery version.
The plugin now contains both versions, you decide which one to include
in your template.

You can find the updated README at

Merry Christmas

Jan Varwig

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs