I'm new to Rails3, and I'm just trying to get one last thing to work before I call it a night. The situation is the following (please if the code is horrible, just let me know, still learning):
I want to log a dive. I might have a new location on that dive at which point I have to create a new Location, and then create the dive. A dive has_one location. A location has_many dives. Currently the foreign key is on dive as location_id. How do I properly, in my dives_controller, generate the location, get the ID, and pass it on to my new dive? It would be nice to have the constructor of Location called, but if it doesn't work that way, then that's okay too. My code is below: Thanks. -- Melih O. http://www.onvural.net/melih ==========CODE========== class Dive < ActiveRecord::Base belongs_to :user has_one :location end require 'json' require 'net/http' require 'uri' class Location < ActiveRecord::Base has_many :dive def initialize(location) @name = location[:name] @city = location[:city] @region = location[:region] @country = location[:country] url = "http://maps.googleapis.com/maps/api/geocode/json? address="+location[:city].sub(' ', '+')+"+"+location[:region].sub(' ', '+')+"+"+location[:country].sub(' ', '+')+"&sensor=false" resp = Net::HTTP.get_response(URI.parse(url)) googMapsResponse = JSON.parse(resp.body) @latitude = googMapsResponse["results"][0]["geometry"]["location"] ["lat"] @longitude = googMapsResponse["results"][0]["geometry"]["location"] ["lng"] end def to_str "#{self.name}::#{self.city}::#{self.region}::#{self.country}" end end class DivesController < ApplicationController def create @dive = Dive.new(params[:dive]) if params[:location][:id] == "" then @location = create_location(params[:location]) @dive.location_id = @location.id else @dive.location_id = params[:location][:id] end @dive.user_id = params[:user][:id] end end -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

