2011-03-02 51 views
12

我一直在嘗試使用幾個不同的gem來顯示軌道3內的googlemaps,並且有幾個問題。Ruby/Rails - 如何創建一個類並從控制器訪問它

幸運的是,我發現這是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值作爲變量並顯示動態地圖。

回答

23

您應該把location.rb放在任何你認爲最有意義的地方。在app/models/location.rb上確保它在您的應用啓動時自動需要,但有些人預計app/models中的類將由ActiveRecord支持。

如果您願意,也可以將其放在lib/之下。

將其提供給應用程序,您可以包括要求在項目初始化語句中的config文件夾中:

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給你的東西。

相關問題