I've been trying to use a few different gems for displaying googlemaps within rails 3 and have had several problems.
Luckily I found this https://github.com/YouthTree/bhm-google-maps which is a helper and it seems to work for others.
I've installed it properly but in the readme https://github.com/YouthTree/bhm-google-maps/blob/master/README.md it mentions creating a class for the object to display in the view.
The example they gave was
class Location
attr_accessor :address, :lat, :lng
def initialize(address, lat, lng)
@address = address
@lat = lat
@lng = lng
end
def to_s; address.to_s; end
end
And then running
<%= draw_map_of Location.new("My House", 12.345, 56.789) %>
in the view.
It seems simple enough but I haven't experienced the need of creating a class before in rails so I have some questions.
Should I create a location.rb file and place the above code in it, but where should I place the file? (model folder, application folder????)
Is there a way for me to create this class within my controller?
Ideally I would like to manipulate the lat/lng values as variables and display a dynamic map.
You should put
location.rb
wherever you feel it makes the most sense. Having it atapp/models/location.rb
will ensure that it's automatically required when your app starts, but some people expect that classes inapp/models
are backed by ActiveRecord.You could also put it under
lib/
if you prefer.To make it available to the app, you can include require statement in project initializers inside your config folder:
As for creating it inside your Controller - definitely! It's just another instance of a class:
And then in your view:
Don't forget – beneath Rails is all the power and flexibility of pure Ruby, ready to be used. You're not only limited to what Rails gives you.