Calling a controller action from javascript

Hi all,

I am using the google maps API to perform some geolocation on the client side. I am able to geocode my users address without any issues. However after doing this on the front end I would like to goto my backend and query my DB based on the address. After that I want to redirect the users to a different page where the query results would be displayed. Is there a way to achieve this?

I was doing everything on the backend before this and it was working fine. However there is limit associated with the geolocation API from Google and the limit is set per IP. Hence I wanted to perform the geolocation on the client side so that I don't exceed the limit.

Here is my controller code:

def result # the location parameter comes from the geocoded address on the front end    @restaurants = Restaurant.load_results(params[:location])    render :layout => 'search_results' end

But this call never gets redirected to the result.html.erb page

Any help will be really appreciated.

Thanks, vishy

Your view code would be helpful to see.

here is the view code in the result.html.erb

<% restaurants.each do |restaurant| %>   <div class="featured">     <%= render 'search_result', :restaurant => restaurant%> <div class="order_link">   <%= link_to 'Order Now', {:controller => "search", :action => "create_order", :id => restaurant},            :class => "order_now_link"%>         </div>       </div>       <div class="clear"></div>     </div>


Oops hit the send button too quickly.

Here is the actual result.html.erb code

<% @restaurants.each do |restaurant| %> <div class="featured">   <%= render 'search_result', :restaurant => restaurant%>   <div class="order_link">   <%= link_to 'Order Now', {:controller => "search", :action => "create_order", :id => restaurant},    :class => "order_now_link"%>   </div> </div> <% end %>

Also the JS code in my application.js is :

$('searchbutton').live('click', function() {   var address = $('address_text).val();   geocoder = new google.maps.geocoder();   geocoder.geocode(request:address,callback:function(results,status) {     var lat = results[0];     var lng = results[0].geometry.location.lng().toString();     $.getScript("search/result.html?location=" + address);     return false;   }); });


Are you using Firebug to see if any Javascript errors are preventing the call from even ocurring? Did you see the syntax error in your .js? $('address_text) should be $ ('address_text')