2017-10-13 5 views
0

Auf der Suche nach Hilfe mit der Meetup.com API versuche ich, meine Rails App hinzuzufügen. Mein Ziel ist es, nur einen Blick auf lokale Treffen zu werfen, wenn Sie die App öffnen.Meetup-API mit RoR. Getting NameError: nicht initialisierte Konstante Event in der Rails-Konsole

Hier ist mein Code so weit:

routes.rb (am Boden vor dem letzten 'Ende'):

root 'meetup#get_meetup' 

meetup_controller.rb

class MeetupController < ApplicationController 
    def get_meetup 
    if params[:city] && params[:name] 
     @Event = Event.new(params[:city], params[:name]) 
    else 
     @event = Event.new("90034", "networking") 
    end 
    end 
end 

meetup.rb :

class Event 
    attr_reader :city, :nam 
    def initialize(city, name) 

url = "http://api.meetup.com/2/events?key#{ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It-Austin&sign=true.json" 

    response = HTTParty.get(url) 

    @event = response["event"] 

    @city = city 
    @name = name 
    end 
end 

I versuchte, eine neue Ereignissuche mit den Parametern für die Stadt und den Namen (auch die Ereigniskategorien) in der Schienenkonsole zu erstellen.

Schienen Konsole: Event.new ("Austin", "Vernetzung")

und es gab mir den Fehler Nameerror: nicht initialisierte Konstante Ereignis

** I Dritter noch neu bin zu verwenden API ist besonders mit Rails, also habe ich online nicht zu viele Informationen darüber gefunden, wie man sie richtig zur Arbeit bringt. Wenn jemand mir bitte einen Einblick geben könnte, warum das nicht stimmt ... oder wenn es einen tollen Artikel/Webseite gibt, die mir dabei helfen können, lass es mich wissen !!

+0

So. verwendest du ActiveRecord nicht? – xiaocui

+0

Ich habe versucht, auch zu benutzen. Nicht sicher, ob du das meinst, aber das hat mir auch nichts gegeben. – DianaBG

Antwort

0

Server nach dem Kopieren neu starten, persönlich nie versucht, Meetup API zu verwenden.

Controller

Meetup.new(city, name) 

/config/application.rb

config.eager_load_paths << Rails.root.join('lib') 

/lib/meetup.rb

require 'rest-client' 
require 'net/http' 
require 'json' 

class Meetup 

    attr_reader :city, :name 
    def initialize(city, name) 

    resp = RestClient.get("http://api.meetup.com/2/events?key#{ENV['meetup_api_key']}&group_urlname=Girl-Develop-It-Austin&sign=true.json") 
    #or 
    resp = RestClient.get("http://api.meetup.com/2/events", 
     { key: ENV['meetup_api_key'], 
      group_urlname: "Girl-Develop-It-Austin", 
      sign: true 
     }) 

    @event = JSON.parse(resp, { symbolize_names: true })[:event] 

    @city = city 
    @name = name 
    end 
end 
+0

Vielen Dank für Ihre Antwort! Nur eine Frage, aber warum sollte sich das meetup.rb im lib-Ordner befinden? Ich hatte es als neues Modell in meinen Modellordner gelegt. Außerdem bekomme ich jetzt diesen Fehler "NameError: undefinierte lokale Variable oder Methode' meetup 'für main: Object "Ich denke, ein anderes Problem ist, dass ich mir nicht sicher bin, was ich Event oder Meetup nennen soll. Ich habe meine Variablen zu "Meetup" sowie die Dateinamen geändert ... aber das kann ein Problem sein. – DianaBG

+0

Ich versuche, ein paar Richtlinien sowie die Dokumentation zu folgen, aber es ist schwer zu wissen, was genau ich als Anfänger mit APIs tun soll. – DianaBG

+0

Auch wo genau stelle ich diese Config-Zeile in application.rb. Es gab mir einen Fehler beim Aktualisieren meiner Datenbank. (config.ager_load_paths << Rails.root.join ('lib'))? – DianaBG

0

Try um den Code in das Serviceobjekt zu verschieben

Erstellen Sie einen Ordner Services im App-Ordner. Dann verschieben Sie Ihre Event-Klasse in den Service-Ordner. Auch bei der Initialisierungsmethode empfiehlt es sich, nur die Variable zu initialisieren. schließlich zum Parsen einen anderen method.And Erstellen Sie haben einen Rechtschreibfehler gemacht, die ich korrigiert habe

class Event 
     include HTTParty 
     attr_reader :city, :name ##you have made a spelling mistake 

     def initialize(city, name) 
     @city = city 
     @name = name 
     end 

     def parsing 
     url = "http://api.meetup.com/2/events?key# 
      {ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It- 
      Austin&sign=true.json" 
     response = HTTParty.get(url) 
     @event = response["event"] 
     end 

    end 
0

Sie müssen Ihre Schienen Konsole neu starten mit reload! auch haben Sie oben meetup.rb Datei erwähnt, die

enthält
class MeetUp #you need to change class name 
     attr_reader :city, :name 
     def initialize(city, name) 

     url = "http://api.meetup.com/2/events?key#ENV["meetup_api_key"]}&group_urlname=Girl-Develop-It-Austin&sign=true.json" 

     response = HTTParty.get(url) 

     @event = response["event"] 
     @city = city 
     @name = name 
    end 
    end 

Wenn Ihr Dateiname den Namen der Klasse wird meetup.rb muss MeetUp nicht Event Bitte Ihre Klassennamen ändern oder sonst können Sie Dateinamen als event.rb

Sie können nicht Modell definieren ändern oder in der Klasse als anderer Name Ich hoffe meine Antwort wird dir helfen. Danke

+0

Vielen Dank für Ihren Kommentar! Ich habe das bearbeitet und einige andere Probleme mit meinem Code geändert und habe den neuen Fehler "NameError: undefinierte lokale Variable oder Methode' meetup 'für main: Object "erhalten. – DianaBG

+0

Wenn es Ihr ActiveRecord (Model) ist, müssen Sie zuvor erstellte Migration/Modell manuell aus dem Verzeichnis app/model und db/migration entfernen, danach können Sie eine weitere Migration erstellen, um meetup.rb zu erstellen – Asmita

Verwandte Themen