Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


An address picker for Rails with autocompletion and map picking. This library is built upon jquery-addresspicker and adds convenient features such as:

  • integration with the assets pipeline
  • auto loading of the Google Maps API
  • auto discovery of the address picker fields
  • JavaScript object wrappers
  • (TODO) form builders


Add it to your Gemfile:

gem 'address_picker-rails'

Run the following command to install it:

bundle install

In your JavaScript manifest application.js add:

//= require address_picker-rails

Since jquery-addresspicker uses jQuery-UI themes, you may use jquery-ui-themes-rails instead of defining your own theme:

  • add to your Gemfile: gem 'jquery-ui-themes'
  • add to you CSS manifest application.css: *= require jquery-ui/<theme_name>


You may also take a look at this simple demo application which is also deployed on Heroku.


In your migration:

class CreatePonds < ActiveRecord::Migration
  def change

    create_table :ponds do |t|

      t.string :address
      t.string :address_latitude
      t.string :address_longitude
      t.string :address_locality
      t.string :address_country



In your model:

class Pond < ActiveRecord::Base
  attr_accessible :address, :address_latitude, :address_longitude, :address_locality, :address_country


In the following example the only mandatory field is the address (the first one):

<div class="field">
  <%= f.label :address %><br />
  <%= f.text_field :address, :class => 'address-picker-input' %>

<div class="field">
  <%= f.label :address_latitude %><br />
  <%= f.text_field :address_latitude, :readonly => true, :class => 'address-picker-latitude' %> </div>

<div class="field">
  <%= f.label :address_longitude %><br />
  <%= f.text_field :address_longitude, :readonly => true, :class => 'address-picker-longitude' %>

<div class="field">
  <%= f.label :address_locality %><br />
  <%= f.text_field :address_locality, :readonly => true, :class => 'address-picker-locality' %>

<div class="field">
  <%= f.label :address_country %><br />
  <%= f.text_field :address_country, :readonly => true, :class => 'address-picker-country' %>

<div class="field">
  <%= f.label :address_map %><br />

  <!-- *** Pay attention to the IDs *** -->
  <div id="pond_address_map_wrapper" class="address-picker-map-wrapper">
    <div class="address-picker-legend">You can drag and drop the marker to the correct location</div>
    <div id="pond_address_map" class="address-picker-map"></div>


Pay attention to the IDs of the fields: all related fields must have an ID beginning with the same prefix (here that's pond_address since we are using a form builder). The default prefix is address.

ID Required Read only
[prefix] X
[prefix]_latitude X
[prefix]_longitude X
[prefix]_locality X
[prefix]_country X
[prefix]_map X

NB: In the above example, the ID of the map field is pond_address_map since it's not set by a builder.


The CSS classes are optional unless you're planning to use the auto-discovery feature (see below). If you do, the address field must have the address-picker-input class.


There are several ways to initialize the address pickers.

Auto discovery

The simplest one is to use auto discovery which:

  • (optionally) waits for the DOM to be loaded, then
  • searches for all fields having the address-picker-input CSS class, then
  • uses each ID of these fields as a prefix to apply an address picker

So you can just add to your application.js or to your view:


You can provide a callback which will be called after each address picker has been applied:

  'onLoad':function (picker) {
    console.debug("callback for a single pond with ID '%s'", picker.getIdPrefix());

The not deferred version:



The ID prefix default is address:

new AddressPickerRails.Picker().apply();

You can use a custom ID prefix:

new AddressPickerRails.Picker({idPrefix:"pond_address"}).apply();

You can provide a callback which will be called after the address picker has been applied:

var picker = new AddressPickerRails.Picker({idPrefix:"pond_address"});
picker.apply(function (railsPicker) {
    console.debug("callback for a single pond with ID '%s'", railsPicker.getIdPrefix());


Tested with Rails 3.2 but it should work with Rails 3.1, or anything that uses the asset pipeline.

Contributing to address_picker-rails

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.


Copyright (c) 2012 David DIDIER. See LICENSE.txt for further details.

Sébastien Gruhier@


No description, website, or topics provided.




No packages published

Contributors 4

You can’t perform that action at this time.