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.