我一直在尝试使用一些不同的宝石在rails 3中显示googlemaps,并且遇到了一些问题。
幸运的是,我发现这个https://github.com/YouthTree/bhm-google-maps是一个帮助者,它似乎适用于其他人。
我已正确安装,但在自述文件https://github.com/YouthTree/bhm-google-maps/blob/master/README.md中,它提到为要在视图中显示的对象创建一个类。
他们给出的例子是
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
然后运行
<%= draw_map_of Location.new("My House", 12.345, 56.789) %>
在视图中。
看起来很简单,但我没有经历过在rails之前创建类的需要,所以我有一些问题。
我应该创建一个location.rb文件并将上面的代码放在其中,但是我应该在哪里放置文件? (模型文件夹,应用程序文件夹????)
我有没有办法在我的控制器中创建这个类?
理想情况下,我想将lat / lng值作为变量进行操作并显示动态映射。
答案 0 :(得分:24)
你应该把location.rb
放在你认为最有意义的地方。将其设置为app/models/location.rb
将确保在您的应用启动时自动需要它,但有些人希望app/models
中的课程由ActiveRecord支持。
如果您愿意,也可以将其置于lib/
下。
要使应用程序可以使用,您可以在配置文件夹中的项目初始值设定项中包含require语句:
require "#{Rails.root}/lib/location.rb"
至于在控制器内部创建它 - 绝对是!它只是一个类的另一个实例:
def show
@location = Location.new("My House", 12.345, 56.789)
end
然后在你看来:
<%= draw_map_of @location %>
不要忘记 - 在Rails之下是纯Ruby的所有功能和灵活性,随时可以使用。你不仅限于Rails给你的东西。