Ruby / Rails - Как создать класс и получить к нему доступ из контроллера - PullRequest
14 голосов
/ 03 марта 2011

Я пытался использовать несколько разных драгоценных камней для отображения GoogleMap в Rails 3, и у меня было несколько проблем.

К счастью, я нашел это https://github.com/YouthTree/bhm-google-maps, который является помощником, и кажется,работать для других.

Я правильно установил его, но в файле readme 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 как переменнымии отобразить динамическую карту.

1 Ответ

24 голосов
/ 03 марта 2011

Вы должны положить location.rb везде, где вы чувствуете, это имеет смысл. При значении app/models/location.rb он будет автоматически необходим при запуске приложения, но некоторые люди ожидают, что классы в app/models поддерживаются ActiveRecord.

Вы также можете поставить его под lib/, если хотите.

Чтобы сделать его доступным для приложения, вы можете включить оператор извлечения в инициализаторах проекта в вашей папке конфигурации:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...