I got the auto city/state lookup working. If anyone wants to clean up this code and use it, improve it, gemmify it, wiki it, or blog it, feel free. If you''re inclined to do so, let me know of any improvements you make, as I might like to use them myself. Naturally, you''ll need a zipcode database. There''s a free one available here: http://civicspacelabs.org/home/developers/download Also, don''t forget to: ruby script/generate Zipcode --bryce # view file <form> <label>zip:<br/> <%= text_field(''address'',''zip'') %> </label> <br/> <br/> <label>city:<br/> <%= text_field(''address'',''city'', :class=>"update_field") %> </label> <%= observe_field(''address_zip'', :frequency=>1, #:update=>''address_city'', :url=>{ :controller=>''store'', :action=>''get_city_from_zip''}, :with=>"''zip=''+value", :complete => evaluate_remote_response ) %> <br/> <br/> <label> state:<br/> <select id="address_state" name="address[state]" size="1"> <option value="AL">AL Alabama</option> <option value="AK">AK Alaska</option> <option value="AZ">AZ Arizona</option> <option value="AR">AR Arkansas</option> <option value="CA">CA California</option> <option value="CO">CO Colorado</option> <option value="CT">CT Connecticut</option> <option value="DE">DE Delaware</option> <option value="DC">DC District of Columbia</option> <option value="FL">FL Florida</option> <option value="GA">GA Georgia</option> <option value="HI">HI Hawaii</option> <option value="ID">ID Idaho</option> <option value="IL">IL Illinois</option> <option value="IN">IN Indiana</option> <option value="IA">IA Iowa</option> <option value="KS">KS Kansas</option> <option value="KY">KY Kentucky</option> <option value="LA">LA Louisiana</option> <option value="ME">ME Maine</option> <option value="MD">MD Maryland</option> <option value="MA">MA Massachusetts</option> <option value="MI">MI Michigan</option> <option value="MN">MN Minnesota</option> <option value="MS">MS Mississippi</option> <option value="MO">MO Missouri</option> <option value="MT">MT Montana</option> <option value="NE">NE Nebraska</option> <option value="NV">NV Nevada</option> <option value="NH">NH New Hampshire</option> <option value="NJ">NJ New Jersey</option> <option value="NM">NM New Mexico</option> <option value="NY">NY New York</option> <option value="NC">NC North Carolina</option> <option value="ND">ND North Dakota</option> <option value="OH">OH Ohio</option> <option value="OK">OK Oklahoma</option> <option value="OR">OR Oregon</option> <option value="PA">PA Pennsylvania</option> <option value="RI">RI Rhode Island</option> <option value="SC">SC South Carolina</option> <option value="SD">SD South Dakota</option> <option value="TN">TN Tennessee</option> <option value="TX">TX Texas</option> <option value="UT">UT Utah</option> <option value="VT">VT Vermont</option> <option value="VA">VA Virginia</option> <option value="WA">WA Washington</option> <option value="WV">WV West Virginia</option> <option value="WI">WI Wisconsin</option> <option value="WY">WY Wyoming</option> </select> </label> </form> # store_controller.rb def get_place_from_zip zip = params[:zip] zip = zip[0..4] #zip = 90210 # for verifying if it works. guess which city it is? if zip.length == 5 @where = Zipcode.find(:first, :conditions=>[''zipcode = ?'', zip]) end render(:layout => false) end # get_place_from_zip.rhtml ## hard coded javascript, because we want to change the elements'' value, not their innerHTML $(''address_city'').value = ''<%= @where.city %>''; $(''address_state'').value = ''<%= @where.state %>'';