2011-03-02 19 views
12

He estado tratando de usar algunas gemas diferentes para mostrar googlemaps dentro de rails 3 y he tenido varios problemas.Ruby/Rails - Cómo crear una clase y acceder a ella desde el controlador

Afortunadamente encontré este https://github.com/YouthTree/bhm-google-maps que es un ayudante y parece funcionar para otros.

Lo he instalado correctamente pero en el archivo Léame https://github.com/YouthTree/bhm-google-maps/blob/master/README.md menciona la creación de una clase para el objeto que se mostrará en la vista.

El ejemplo que dio fue

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 

Y luego corriendo

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

en la vista.

Parece bastante simple pero no he tenido la necesidad de crear una clase antes en rieles, así que tengo algunas preguntas.

¿Debo crear un archivo location.rb y colocar el código anterior en él, pero dónde debo colocar el archivo? (carpeta modelo, carpeta de aplicaciones ????)

¿Hay alguna manera de crear esta clase dentro de mi controlador?

Idealmente me gustaría manipular los valores lat/lng como variables y mostrar un mapa dinámico.

Respuesta

23

Debe poner location.rb donde le parezca más lógico. Tenerlo en app/models/location.rb asegurará que se requiera automáticamente cuando se inicie la aplicación, pero algunas personas esperan que las clases en app/models estén respaldadas por ActiveRecord.

También podría ponerlo debajo de lib/ si lo prefiere.

para que esté disponible para la aplicación, puede incluir requerir declaración en inicializadores de proyectos dentro de la carpeta config:

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

En cuanto a la creación dentro de su controlador - definitivamente! Es sólo otra instancia de una clase:

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

Y a continuación, en su opinión:

<%= draw_map_of @location %> 

No se olvide - por debajo de los carriles es toda la potencia y flexibilidad de Ruby puro, listo para ser utilizado. No solo estás limitado a lo que Rails te brinda.

Cuestiones relacionadas