Ruby/Rails – Hvordan til at Oprette en Klasse og Adgang til det fra Controller

Jeg har forsøgt at bruge et par forskellige perler til visning af google maps i rails 3, og har haft flere problemer.

Heldigvis fandt jeg denne https://github.com/YouthTree/bhm-google-maps der er en hjælper, og det ser ud til at arbejde for andre.

Jeg har installeret det korrekt, men i de readme – https://github.com/YouthTree/bhm-google-maps/blob/master/README.md det nævner skabe en klasse for det objekt, der skal vises i visningen.

Det eksempel, de gav, var

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

Og så kører

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

i udsigt.

Det virker enkelt nok, men som jeg ikke har oplevet behovet for at skabe en klasse, før det i skinnerne, så jeg har nogle spørgsmål.

Skal jeg oprette en placering.rb-fil og placere den ovenstående kode i det, men hvor skal jeg placere filen? (model folder, program-mappen????)

Er der en måde for mig at skabe denne klasse inden min controller?

Ideelt set ville jeg gerne manipulere lat/lng værdier som variabler og vise et dynamisk kort.

OriginalForfatteren ChrisWesAllen | 2011-03-02

1 svar

  1. 24

    Du bør sætte location.rb, hvor du føler, at det giver mest mening. At have det på app/models/location.rb vil sikre, at det er automatisk nødvendig, når din app ‘ en starter, men nogle mennesker forventer, at klasser i app/models er bakket op af ActiveRecord.

    Du kan også sætte det under lib/ hvis du foretrækker det.

    At gøre det tilgængeligt for den app, du kan medtage kræver redegørelse i projektet initializers inde i din config-mappen:

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

    Som for at skabe det inde i din Controller – helt sikkert! Det er bare endnu en instans af en klasse:

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

    Og derefter i din visning:

    <%= draw_map_of @location %>

    Glem ikke – under Skinnerne er al den kraft og fleksibilitet af ren Ruby, klar til at blive brugt. Du er ikke kun begrænset til, hvad der Skinner giver dig.

    Du kan dog kun require 'location' hvis du har filen lib/location.rb til stede.
    alternativ syntaks: Rails.root.join('lib', 'location').to_s

    OriginalForfatteren Dan Cheail

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *