2011-03-02 15 views
12

Birkaç farklı mücevher kullanmaya çalışıyorum.Ruby/Rails - Bir Sınıf Nasıl Oluşturulur ve Denetleyiciden Erişim

Neyse ki bu bir yardımcıdır ve diğerleri için çalışıyor gibi görünüyor bu https://github.com/YouthTree/bhm-google-maps bulundu.

Düzgün yükledim ancak readme https://github.com/YouthTree/bhm-google-maps/blob/master/README.md'da, nesnenin görünümde gösterileceği bir sınıf oluşturduğundan bahsediyor. onlar verdi

örnek

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 

Sonra görünümünde

<%= draw_map_of Location.new("My House", 12.345, 56.789) %> 

çalışan oldu.

Yeterince basit görünüyor ama raylarda daha önce bir sınıf yaratma ihtiyacını yaşamamıştım, bu yüzden bazı sorularım var.

Bir location.rb dosyası oluşturmalı ve yukarıdaki kodu buna yerleştirmeliyim, ancak dosyayı nereye yerleştirmeliyim? (model klasörü, uygulama klasörü ????)

Bu sınıfı benim denetleyicimde oluşturmamın bir yolu var mı?

İdeal olarak lat/lng değerlerini değişken olarak değiştirmek ve dinamik bir harita görüntülemek istiyorum.

cevap

23

location.rb'u en mantıklı hissettiğiniz her yere koyun. app/models/location.rb numaralı telefona sahip olmak, uygulamanız başladığında otomatik olarak gerekli olmasını sağlayacaktır, ancak bazı kullanıcılar, app/models'daki sınıfların ActiveRecord tarafından desteklenmesini bekler.

İsterseniz lib/'a da yazabilirsiniz.

app için kullanılabilir hale için, yapılandırma klasörünün içindeki proje başlatıcılar ifadeyi gerektiren dahil edebilirsiniz: Denetleyici içine oluştururken gelince

require "#{RAILS.root}/lib/location.rb 

- kesinlikle! senin görünümünde

def show 
    @location = Location.new("My House", 12.345, 56.789) 
end 

Ve sonra: Bir sınıfın bir başka örneği var

<%= draw_map_of @location %> 

unutma - altına Raylar kullanıma hazır, tüm güç ve saf Ruby esneklik. Sadece Rails'in sana verdiği şeyle sınırlı değilsin.

İlgili konular