Skip to main content

Using Geocoder to get street name,state,city,country etc in Your Rails app

Recently i implemented Google map for one of the module where User will enter his location/address and other relevant geo-details should get autopopulated.Well,This was posible because of  Geocoder and by using it you can get every small details such as postalcode,country code,zipcode,street name,state name,state code,latitude,longitude(and more) ready in your hands easily.Its really awesome.
I have used to it get all relevant information about the location that the user enter using Geocomplete,another awesome autocomplete library to get locations.

Suppose you have a users table and also few columns such as longitude,latitude,state,postal code,street name,address,country  and want to autopopulate other fields just by using address entered by the user then you are reading the right blog,So its easy,let me show you how.


  1. User will enter address using Geocomplete and store that address in address column in users/locations table
  2. Then,use Geocoder to fetch other geo informations and update other columns using address.

Here it goes................



================users/locations table,here i will use the allow the user to fill in the address using Geocomplete and then use it to get other details using Geocoder

class CreateLocations < ActiveRecord::Migration
  def change
    create_table :places do |t|
      t.string :address
      t.float :latitude
      t.float :longitude
      t.string :address
      t.string :country
      t.string :state
      t.string :city
      t.string :pincode
      t.timestamps
    end
    add_index :places, :address
  end
end

==================Geocode to autopopulate using address in users/location model

##i want to use the address column to autopopulate others columns
geocoded_by :address
##also i want to use the latitude.longitude to fetch all others informations and then save in relevant ##feilds
reverse_geocoded_by :latitude, :longitude do |obj,results|
  if geo = results.first
    obj.state    = geo.state
    obj.city    = geo.city
    obj.pincode = geo.postal_code
    obj.country = geo.country
  end
end
##change/update/validate address only if address changed to improved performance else every time it ##will keep updating
after_validation :geocode, :reverse_geocode ,:if => :address_changed?

.
So,as you can see,how easy it is to get every geo informations using Geocoder.There are also many other uses of Geocoder which is  out of the scope of this blog and can be found out here.Hope you get to learn something new,




Comments

Popular posts from this blog

Configure amazon s3 with your rails app in just 5 mins

if you are looking to make use of your uploads using paperclip on AMAZON S3,then this is something that will help you. i tried the same and wasted 5 days but its very easy by using ONLY aws-sdk gem and you can start uploading to S3.  Before starting i assume few thing from you: You have a running rails app ready. You have an active AMAZON S3 account (get the credentials,you will need it now) You are using paperclip 3.5.1 (i prefer) You uploads are saving to your system locally short preview of the sequence you need to understand: START -> get aws-sdk gem -> create new s3.yml -> configure an initializer-paperclip.rb using AMAZON S3 credentials ----END----------THAT'S IT lets get started: Install 'aws-sdk' gem by including in gemfile and running bundle install. Gemfile: gem 'paperclip' , '3.5.1' gem "aws-sdk"   Create new yml file such as config/s3.yml and store your AMAZON S3 credentials as shown below

Using Charts in Rails Application

Hi Folks,                i have been using charts and graphs to show statistics such for number of orders,products category,daily visits.etc. Before i started using charts,i have been using Charts,js to show charts,which is too very easy. Here is the link where you can get more to understand about Chart.js As i want to share more about Chartkick ,which is a ruby gem which simplifies usage of Charts/Graphs in any Rails application just by simply installing the Gem and using one-line code in your view files wherein you need to pass group_by aggregated results Let us Start by visiting the Gthub page for Chartkick gem Install the Gem  Add the Dependent script(google chart/highchart js) in layout file <%= javascript_include_tag " //www.google.com/jsapi " , " chartkick " % > 3.YOU ARE DONE :) Once you have the Gem,all you need to do is to decide what type of charts you want to show.which can be:- Line Chart 2. Pie Chart 3. Colu