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.

Reply via email to