Ruby/Rails - Как создать класс и получить к нему доступ из контроллера

Я пытался использовать несколько различных драгоценных камней для отображения GoogleMap в рельсах 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) %>

в представлении.

Это кажется достаточно простым, но у меня не было необходимости создавать классы на рельсах, поэтому у меня есть несколько вопросов.

Должен ли я создать файл location.rb и поместить в него вышеуказанный код, но где мне разместить файл? (папка модели, папка приложения????)

Есть ли способ для меня, чтобы создать этот класс в моем контроллере?

В идеале я хотел бы манипулировать значениями lat / lng как переменными и отображать динамическую карту.

1 ответ

Решение

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

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

Чтобы сделать его доступным для приложения, вы можете включить оператор require в инициализаторы проекта в вашей папке 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.

Другие вопросы по тегам