ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 26 Mai 2013, 22:21 
Offline
Geselle

Registriert: 18 Dez 2012, 19:44
Beiträge: 140
In meiner Applikation wird ein undefinedMethod-Error ausgespuckt für eine Methode, die ich nirgends verwende.

Ich habe eine Rating Anzeige, die auf der show-view eines game-objektes einsehbar ist, also unter der url "games/:id"
In meinem RatingsController ist nur eine Methode definiert zum Kreieren und Updaten.

Jedenfalls wird nirgends in meiner Applikation die Methode "rating_path" verwendet (habe den string im kompletten Projektverzeichnis suchen lassen). Doch genau deswegen erhalte ich einen NoMethod Error, wenn ich die url "games/:id" aufrufe. Meine Applikation erwartet, dass "rating_path" definiert ist, obwohl die Funktion nirgends verwendet wird.

Ich muss in den Routes explizit


1
  get "ratings/:id" => "ratings#bla", as: "rating"

angeben, damit die show-seite angezeigt werden kann. Ich kann mir das nur so erklären, dass ja für das Anzeigen von Ratings (die ja in der games show zu sehen sind) ein routing existieren muss, aber weder die url "ratings/:id" wird in meiner applikation aufgerufen, noch existiert der angegebene methoden name und die helper methode wird wie gesagt auch nicht verwendet, doch genau diese wird anscheinend irgendwo verlangt.

Ich habe jetzt bewusst nicht mehr Code gepostet, weil ich glaube dass das wohl eher ein allgemeineres verständnisproblem ist :/


Nach oben
 Profil  
 
BeitragVerfasst: 26 Mai 2013, 22:58 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
Bitte zeig uns die Stelle die den Fehler verursacht und nicht die Stelle die den Fehler scheinbar behebt.

Aber spontan würde ich vermuten, dass du irgendwo in dem werfenden View ein "link_to rating" oder ähnliches verwendest. Das will einen Link zum dazugehörigen Rating-Controller und der Show-Action erzeugen. Das was ich da geschrieben habe ist in etwa gleichbedeutend zu "link_to rating.name, rating_path(rating)". Warscheinlich ist genau das die „Magie“ die in diesem Fall wieder deinen Kopfschmerz verursacht.

Dennoch, bitte in Zukunft den Fehlerhaften Code zeigen und nicht die vermeintliche Lösung, die eigentlich keine ist. Wenn man den Fehler erzeugenden Code sieht, kann man besser Vorschläge machen, wie du ein ähnliches Ziel erreichst, ohne dass der Fehler weiter auftritt. Wenn es tatsächlich so ist, dass es für Ratings kein Show gibt, dann ist dein Workaround nichts weiter als ziemlicher Bockmist…

*edit*
Könnte aber auch an dem form_for in app/views/ratings/_rating_form.html.erb liegen, nur dass, dort eben mittels POST oder PUT/PATCH gearbeitet wird und daher nicht #show das geforderte Ziel ist, sondern #create bzw #update!

Dieses edit wäre vermeidbar gewesen, hättest du direkt den fragwürdigen Code gezeigt…

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 26 Mai 2013, 23:42 
Offline
Geselle

Registriert: 18 Dez 2012, 19:44
Beiträge: 140
NobbZ hat geschrieben:

*edit*
Könnte aber auch an dem form_for in app/views/ratings/_rating_form.html.erb liegen, nur dass, dort eben mittels POST oder PUT/PATCH gearbeitet wird und daher nicht #show das geforderte Ziel ist, sondern #create bzw #update!

ich kann dir jetzt ehrlich gesagt nicht ganz folgen. Zielt nicht jedes Formular auf einen Post/put ab? Und warum wird da #show verlangt bzw eben das rating_path?

NobbZ hat geschrieben:

Dieses edit wäre vermeidbar gewesen, hättest du direkt den fragwürdigen Code gezeigt…

hach mensch, dabei hatte ich den rating_form code sogar schon im post fenster drinnen, und es aber wieder rausgenommen...


Nach oben
 Profil  
 
BeitragVerfasst: 27 Mai 2013, 05:30 
Offline
Metaprogrammierer

Registriert: 20 Nov 2011, 21:51
Beiträge: 693
SirJaySaeba hat geschrieben:
NobbZ hat geschrieben:

*edit*
Könnte aber auch an dem form_for in app/views/ratings/_rating_form.html.erb liegen, nur dass, dort eben mittels POST oder PUT/PATCH gearbeitet wird und daher nicht #show das geforderte Ziel ist, sondern #create bzw #update!

ich kann dir jetzt ehrlich gesagt nicht ganz folgen. Zielt nicht jedes Formular auf einen Post/put ab? Und warum wird da #show verlangt bzw eben das rating_path?

Da war ich wohl schon etwas müde, das hat ja gar nichts mit #show zu tun! Eigentlich nicht einmal mit den Reviews, solange die Route den richtigen Namen trägt, könnte sie auch nach /dev/null führen…

Aber um zu verdeutlichen, warum er nach review_path fragt, ein kurzer Ausschnit aus meinem Terminal:


1
2
3
4
5
6
7
8
$ rake routes
products GET /products(.:format) products#index
POST /products(.:format) products#create
new_product GET /products/new(.:format) products#new
edit_product GET /products/:id/edit(.:format) products#edit
product GET /products/:id(.:format) products#show
PUT /products/:id(.:format) products#update
DELETE /products/:id(.:format) products#destroy


Hier siehst du, dass in meinem Fall product_path je nach Kontext auf 3 routen gehen kann.

Das schöne daran ist, dass dieses Formular „nach Lust und Laune“ auch mal nach ratings_path schreien könnte, je nachdem ob der Inhalt von "prep_user_rating" bereits in der Datenbank persistiert wurde oder nicht.

Hier greift ein Stück Magie, das es dir erlaubt das gleiche Formular sowohl zum erstellen, als auch zum bearbeiten einer Ressource zu nutzen.

SirJaySaeba hat geschrieben:
NobbZ hat geschrieben:
Dieses edit wäre vermeidbar gewesen, hättest du direkt den fragwürdigen Code gezeigt…

hach mensch, dabei hatte ich den rating_form code sogar schon im post fenster drinnen, und es aber wieder rausgenommen...

So hab ich auch mal angefangen (auch wenn es damals nicht um Rails ging, sondern um eine andere Programmiersprache ;))

Und jetzt noch einen schönen Tag, die Schule ruft!

_________________
Ubuntu Gnome 14.04 LTS
rvm mit App-spezifischer Ruby-Version (meist 2.2.x) und -Gemset

Github ProfilBitbucket Profil


Nach oben
 Profil  
 
BeitragVerfasst: 27 Mai 2013, 10:48 
Offline
Geselle

Registriert: 18 Dez 2012, 19:44
Beiträge: 140
danke das macht jetzt so Sinn für mich! :)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron