code-girls-leipzig

Open full view…

app der Berliner Railsgirls

marion
Tue, 17 Sep 2013 06:10:31 GMT

An unseren hilfreichen Coaches. Hier die erste fachliche Frage: Diese schöne App (siehe auf der Railsgirls-Seite) funktioniert bei mir nicht vollends. Die Google-Karte wird nicht angezeigt und ich bekomme die Fehlermeldung: undefined method 'gmaps4rails_options' for #<Attendee:0x58021f8> Extracted source (around line #8) 6 def index 7 @attendees = Attendee.all 8 @pins = @attendees.to_gmaps4rails 9 end Dann geht leider gar nichts mehr. Wenn ich dann die Zeile 8 entferne, dann wird mir eine Liste angezeigt jedoch ohne google-map, die ich ja eigentlich gern sehen würde. Rechtschreibfehler dürften nicht in Frage kommen, da ich aus der Anleitung kopiert habe. Was bedeutet dieser Fehler und wir kann ich ihn beseitigen?

wunderseltsam
Tue, 17 Sep 2013 12:28:13 GMT

Der Fehler bedeutet dass du versucht hast eine Methode von `@attendees` aufzurufen die es nicht gibt. Mögliche Ursachen sind wie üblich Tippfehler oder fehlende Abhängigkeiten (gems). Kannst du den Inhalt von *app/views/attendees/index.html.erb* mal als [Gist](https://gist.github.com) hochladen und den Link hier posten? Am besten auch noch die Fehlermeldung dazu. Für Codebeispiele kannst du im Forum eine spezielle Formatierung verwenden, wenn du auf das Fragezeichen im Eingabefeld für neue Posts auf das Fragezeichen klickst müsste die Erklärung erscheinen. Wenn es funktioniert hat sieht es dann wie folgt aus: --- class Coach def ask!(question) "Mhh... Let's look at it a little bit closer." end end ---

marion
Tue, 17 Sep 2013 12:57:59 GMT

https://gist.github.com/MarionsPrivate/6593930 danke für die antwort und schön, dass ein Coach reagiert. Das komische ist, dass ich alles ziemlich haargenau gemacht habe wie in der Anleitung auf der Railsgirls-Berlin-App beschrieben. Ich hab, glaube ich, auch nur die Änderungen kopiert, sodass Rechtschreibfehler nahezu ausgeschlossen sind. Umso eigenartiger, dass das bei mir nicht klappt.

wunderseltsam
Tue, 17 Sep 2013 13:05:50 GMT

Kein Problem, wir machen das gern. Also schön dass du etwas ausprobierst und dann fragst. :) Kannst du bitte den Inhalt von *app/controllers/attendees_controller.rb* auch noch dort hochladen?

marion
Tue, 17 Sep 2013 14:38:16 GMT

so, jetzt hab ich den Gist nochmal geändert, dank für jede hilfe

wunderseltsam
Tue, 17 Sep 2013 14:58:00 GMT

Ok, was du dort siehst sind zwei Fehler: Der Code ist an der falschen Stelle eingefügt und deshalb gibt es einen Fehler weil `@attendees` nicht definiert (`nil`) ist. Im Tutorial steht dass du den Code in die `index`-Methode einfügen sollst, du hast ihn aber in die `set_attendee`-Methode eingefügt. Das ist das eigentliche Problem. Die Fehlermeldung die du dann siehst, ist das Resultat davon. Zur Fehlermeldung selbst: `@attendees` ist an der Stelle wo du es verwendest nicht definiert (`nil`), deshalb bekommst du den `undefined method` Fehler. --- def set_attendee @attendee = Attendee.find(params[:id]) # ohne 's' am Ende @pins = @attendees.to_gmaps4rails # mit 's', hier nicht definiert end ---

marion
Tue, 17 Sep 2013 15:23:58 GMT

ich hab das Ganze jetzt nochmal probiert und bleib wieder stecken, an der selben Stelle: Fehlermeldung habe ich bei Gist neu eingestellt unter https://gist.github.com/MarionsPrivate/6593930 Kann das vielleicht an der Version liegen, dass die damals in berlin noch mit einer anderen Version gearbeitet haben? ich stell den Link zur Berliner Applikation mal mit rein: http://railsgirlsberlin.de/apptutorial/rails-girls-app-tutorial-step-6/

wunderseltsam
Tue, 17 Sep 2013 15:41:34 GMT

Kannst du mal auf der Kommandozeile `rails --version` und `bundle exec rails --version` ausführen und mir sagen was da als Ausgabe kommt? (jeweils mit 2-mal minus) Das Tutorial müsste eigentlich funktionieren, zumindest hat es mir geklappt. Meine Version findest du unter https://github.com/heyLu/railsgirls.attendees. Vielleicht hilft es dir da nochmal zu vergleichen. Ansonsten weiß ich jetzt auch nicht so richtig weiter, das was du gepostet hast sieht richtig aus, du könntest mir noch dein ganzes Projekt schicken, dann kann ich da nachschauen.

wunderseltsam
Tue, 17 Sep 2013 15:46:10 GMT

Ich habe noch einen ähnlichen Fehler gefunden: https://github.com/apneadiving/Google-Maps-for-Rails/issues/139#issuecomment-5251450 Dort fehlt `acts__as__gmappable` im Model, hast du den Schritt vielleicht vergessen?

marion
Tue, 17 Sep 2013 18:40:49 GMT

rails version 4.0.0.rc2 bundle version: 4.0.0.rc2 nein, ich hab das acts_as_gmappable nicht vergessen und vielen Dank, und wie kann ich Dir denn das ganze Projekt schicken, würde ich ja gern tun

wunderseltsam
Tue, 17 Sep 2013 19:18:20 GMT

Sieht auch gut aus, es wird immer mysteriöser. :) Das ganze Projekt kannst du mir schicken indem du eine `.zip` Datei daraus machst, es z.B. bei http://ge.tt hochlädst und dann den Link hier postest. Wie genau du eine `.zip` Datei aus dem Projekt machst hängt davon ab ob du Windows, Mac oder Linux benutzt. Meistens funktioniert es indem du mit der rechten Maustaste auf den Ordner mit dem Projekt klickst und dann die "Komprimieren" Option auswählst. Genaueres kann ich dir nur sagen wenn du mir sagst was für ein Betriebssystem du hast.

marion
Tue, 17 Sep 2013 21:32:00 GMT

http://ge.tt/8PxqMRs/v/0 na, wenn das man klappt...

marion
Wed, 18 Sep 2013 05:39:35 GMT

Übrigens vielen Dank, dass du hilfst, echt, ich muss da erst noch reinkommen. Aber ich habe eine Idee. Wenn Du jetzt keinen Fehler findest an meiner railskids-App, dann wäre es hilfreich, wenn du mir dein Projekt schickst. So kann ich es ausprobieren um zu prüfen, ob es auf meinem Laptop läuft oder ob da irgendwas an der Installation falsch ist. - Was meinst du?

wunderseltsam
Wed, 18 Sep 2013 09:27:11 GMT

Es hat geklappt. :) Ich habe keinen Fehler gefunden, bei mir funktionierte alles. Ich habe jedoch in `set_attendee` die eingefügte Zeile gelöscht und noch ein Stylesheet eingebunden dass gebraucht wurde um die Karte dann auch anzuzeigen. Das Projekt mit den Änderungen: http://ge.tt/4MSuwSs/v/0. Der einzige weitere Unterschied ist dass die gems dort mit enthalten sind. Probier mal aus ob das bei dir funktioniert.

marion
Wed, 18 Sep 2013 10:43:14 GMT

Juchhu it works, it is amazing... wie schön, aber woher hätte ich das wissen können, dass da noch ein Stylesheet reingehört? Bei Dir hat es doch ohne dieses Stylesheet funktioniert, warum klappt das bei mir nicht nach Originalanleitung? Haben die anderen dieses Stylesheet irgendwo integriert oder haben die Berliner das einfach vergessen aufzuführen? doch jetzt erst nochmal - supervielen Dank :-)

marion
Wed, 18 Sep 2013 11:00:54 GMT

oh, leider klappt es doch auch nicht. Die Karte wird jetzt angezeigt. Aber wenn ich einen Teilnehmer anlegen oder updaten möchte kommt folgende Fehlermeldung: http://ge.tt/8PxqMRs/v/0

marion
Wed, 18 Sep 2013 11:02:55 GMT

NoMethodError in AttendeesController#show undefined method `to_gmaps4rails' for nil:NilClass Extracted source (around line #69): 67 def set_attendee 68 @attendee = Attendee.find(params[:id]) 69 @pins = @attendees.to_gmaps4rails 70 end 71 72 # Never trust parameters from the scary internet, only allow the white list through. Rails.root: C:/Sites/projects/railskids Application Trace | Framework Trace | Full Trace app/controllers/attendees_controller.rb:69:in `set_attendee' Request Parameters: {"id"=>"4"} Toggle session dump Toggle env dump Response

wunderseltsam
Wed, 18 Sep 2013 11:48:39 GMT

Das mit dem Stylesheet wusste ich nur weil ich es nach Anleitung ausprobiert habe und die Karte dann noch nicht angezeigt wurde. Auf der [Webseite von gmaps4rails](https://github.com/apneadiving/Google-Maps-for-Rails#requirements) habe ich dann die Anmerkung zu dem Stylesheet gefunden. Wahrscheinlich wurde das Stylesheet mit einer älteren rails-Version noch automatisch eingebunden, jetzt muss man das von Hand machen. Der Fehler den du siehst ist der den ich in meiner [geänderten Version von deinem Projekt](http://ge.tt/4MSuwSs/v/0) behoben habe. Du hattest wahrscheinlich vom Rumprobieren noch in `set__attendee` die Zeile eingefügt, du brauchst sie aber nur in `index`. Wenn du also Zeile 69 in *attendees___controller.rb* löscht sollte auch der Rest funktionieren. Das Problem hatte ich weiter oben schonmal erklärt, das ist wahrscheinlich untergegangen.

marion
Thu, 19 Sep 2013 14:47:18 GMT

Lieber wunderseltsam, der sich so nett und intensiv mit meinem Programmier-problem befasst, vielen Dank nochmal. Hier meine letzten Erfahrungen: Ich habe Deine korrigierte App ausprobieren wollen. hat nicht geklappt, ich soll zuerst bundle installieren für railskids-fixed, was ich jetzt mal mache... Nun, Deine App funktioniert insofern, dass neue Teilnehmer angelegt werden, die Karte aber nur als schwarz umrandetes freies Feld dargestellt wird. Wenn ich jetzt die Seite Reloade, wird die Karte mit Pins geladen. Dauert trotzdem ziemlich lange. Bei meiner App bleibt der Fehler trotz verwandeln der Zeile in einen Kommentar. 69 #@pins = @attendees.togmaps4rails Fehler bleibt wie unten angezeigt. Dann versuch ich jetzt einfach auch nochmal das bundle zu installieren - es war aber schon geladen - trotzdem jetzt klappt es genauso wie bei Deiner App. - Ich muss die Seite aber immer reloaden, um die Karte samt neu eingegebener Pins angezeigt zu bekommen, auch wenn ich keine neue Location eingebe muss ich die Seite immer Reloaden, um die Karte angezeigt zu bekommen. Schlu ssfolgerung: die Fehlermeldung verschwand, nachdem ich die von Dir vorgeschlagenen Änderungen eingegeben hatte + nachdem ich bundle nochmal neu installiert hatte. Was kann das wohl sein? Hier nochmal bei Interesse die Fehlermeldung Eine letzte Frage oder anregung: waas heißt das "#show" in der Fehlermeldung - dass sich der Fehler auf die Zeile def show bezieht? --------------------------------------------------------------------------------- --- NoMethodError in AttendeesController#show undefined method `to_gmaps4rails' for nil:NilClass Extracted source (around line #69): 67 68 69 70 71 72 def set_attendee @attendee = Attendee.find(params[:id]) @pins = @attendees.to_gmaps4rails end # Never trust parameters from the scary internet, only allow the white list through. Rails.root: C:/Sites/projects/railskids Application Trace | Framework Trace | Full Trace app/controllers/attendees_controller.rb:69:in `set_attendee' Request Parameters: {"id"=>"6"} Toggle session dump _csrf_token: "0TB1/uIHfmWytFPWvlctOsFiqNlwoTSDtUDf5QZykk8=" flash: {"discard"=>[], "flashes"=>{:notice=>"Attendee was successfully created."}} session_id: "2b2e371b30b31eccbfa16e010ad0982e" Toggle env dump GATEWAY_INTERFACE: "CGI/1.1" HTTP_ACCEPT: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" HTTP_ACCEPT_ENCODING: "gzip, deflate" HTTP_ACCEPT_LANGUAGE: "en-US,en;q=0.5" REMOTE_ADDR: "127.0.0.1" REMOTE_HOST: "127.0.0.1"

wunderseltsam
Thu, 19 Sep 2013 16:59:55 GMT

Spontan habe ich keine Erklärung dafür dass du die Seite immer zweimal laden musst, aber da kann ich ja mal nächsten Dienstag schauen falls du da zum Treffen gehst. Warum genau ein erneutes `bundle install` den Fehler behoben hat kann ich dir auch nicht sagen, nur ein paar mögliche Erklärungen: deine Installation ist ein bisschen kaputt und braucht manchmal ein bisschen Nachhilfe oder das erste `bundle install` ist irgendwo fehlgeschlagen und das zweite Mal hat dann funktioniert oder du hast den rails-Server zwischendurch nicht neu gestartet oder zu früh neu gestartet. Wie dem auch sei, merk dir den `bundle install`-mal-zwei Trick, der könnte einige seltsame Sachen beheben. :) Zu der Fehlermeldung: Fast, `AttendeesController` ist die Klasse und `#show` die Methode (nicht Zeile) in der der Fehler auftritt. Die Zeile steht dann danach in `Extracted source (around line #69)`, d.h. der Fehler befindet sich in der Nähe von Zeile 69. Zum nächsten Code-Girls Treffen wären also Fehlermeldungen lesen und Code für andere zugänglich machen zwei gute Themen.

marion
Thu, 19 Sep 2013 18:32:45 GMT

Vielen Dank für die Hilfe und die Lösung. Ich hab auch den Eindruck, dass mit der Installation was nicht stimmt, vielleicht auch an der RailsInstaller-Installation. Ich arbeite an einem Rechner, der GünterPC hat. Vielleicht macht das Sonderzeichen Schwierigkeiten. Das bundle immer 2 mal einspielen ist jetzt gut, aber auf Dauer nicht toll, da ich ja nicht weiß, ob der Rechner spinnt, die Installation fehlerhaft ist oder ich Schreibfehler mache bzw. Programmierungskünste versagen. Es wäre in jedem Falle eine gute Idee, über Fehlermeldungen zu sprechen und über deren Zugänglichmachen. - Ich komme nächsten Dienstag in jedem Fall.