Okay. Also habe ich drei Modelle, a, b und c. a has_one c, b has_many cs und c gehört zu a und b. Wenn ich in einer Methode von b auf "cs" referenziere, kommt es gut an. Aber wenn ich in einer Methode von a auf "c" referenziere, kann es die Referenz nicht finden; es heißt "c" ist eine "undefinierte lokale Variable oder Methode". I wissen,, dass c Objekte erstellt werden, weil sie in der MySQL-Datenbank angezeigt werden, und ich kann sie vom b-Modell perfekt zugreifen, aber ich kann nicht auf sie von dem Modell zugreifen.Warum kann Ruby on Rails diese Klasse nicht finden?
Antwort
Klasse A < Activerecord :: Base has_one: c,: abhängig =>: zerstören
Klasse B < Activerecord :: Base has_many: c
Klasse C < Activerecord :: Base belongs_to : a belongs_to: b
Methode in as_controller erstellen:
def erstellen @a = a.new (params [: a]) params [: b] [: venue_id] = get_venue_id_for_b es sei denn params [: location] [: name] .blank? @ a.user = @user @ a.b = B.neu (params [: b]) @b = @ a.b @ b.valid? @ a.valid?
respond_to do |format|
if @a.valid? and @b.valid?
if (@a.duplicate? or @a.save) and @b.save
flash[:notice] = 'a was successfully created.'
format.html { redirect_to a_url(@a) }
format.xml { head :created, :location => a_url(@a) }
else
format.html { render :action => "new" }
format.xml { render :xml => @a.errors.to_xml and @b.errors.to_xml }
end
else
format.html { render :action => "new" }
format.xml { render :xml => @a.errors.to_xml and @b.errors.to_xml }
end
end
Ende
Diese Methode innerhalb Modell B funktioniert:
def q setzt cs.class Ende
Diese Methode innerhalb Modell A nicht funktioniert:
def q setzt c.class Ende
Es ist immer noch schwer zu sehen, was los ist, ich nehme an, Sie haben Ihre Fremdschlüssel korrekt angegeben. Z.B. Die C-Tabelle sollte 2 Schlüssel "a_id" und "b_id" haben. In Ihrem C-Modell macht ein "has_many: c" keinen Sinn. Sie würden die Pluralform "has_many: cs" verwenden. –
Ihr Problem kommt von Ihrer Spezifikation der Beziehungen.
Es scheint, Sie sind für etwas in dieser Richtung
class a < ActiveRecord::Base
has_one :c, :through=>:b
end
class b < ActiveRecord::Base
has_many :c
end
class a < ActiveRecord::Base
belongs_to :b
end
suchen, erlauben sollten Sie die Abfrage korrekt ausgeführt wird. Hoffe das hilft.
- 1. Ruby on Rails: Putting-Klasse mit submit_tag
- 2. Ruby On Rails Grundvariable
- 3. Kann diese Beziehung in Ruby on Rails beschrieben werden?
- 4. Warum kann Rails diese benutzerdefinierte .yml-Datei nicht finden?
- 5. Ruby on Rails form_for Auswahlfeld mit Klasse
- 6. LocalJumpError (Ruby on Rails)
- 7. Ruby on rails Pfadhelfer
- 8. Ruby On Rails Application.html.haml
- 9. Kann Ruby-Code in Ruby on Rails-Ansichten nicht ausgeben
- 10. Ruby on Rails regex
- 11. Warum sollte ich Ruby on Rails verwenden?
- 12. Feldprüfung Ruby on Rails
- 13. Curl on Ruby on Rails
- 14. Ruby on Rails Libelle
- 15. Ruby on Rails redirect_to Argumente
- 16. Ruby on Rails Beziehungen
- 17. Ruby on rails Queing
- 18. Ruby on Rails Cache
- 19. Ruby on Rails Join Tabellenbeziehung
- 20. Ruby on rails Verbindungsproblem
- 21. Ruby on Rails Entschlüsselung
- 22. Ruby on Rails bietet
- 23. ruby-on-rails: gravatar_for
- 24. Wann ist eine Ruby-Klasse nicht diese Ruby-Klasse?
- 25. Ruby on Rails mit image_tag
- 26. Ruby on Rails Fehler
- 27. Ruby On Rails Migration
- 28. Ruby-on-Rails Authentifizierungsanleitung
- 29. respond_with funktioniert nicht in Ruby on Rails. Warum?
- 30. Ruby on Rails: Warum wird meine Klassenerweiterung nicht erkannt?
Postleitzahl mit allen relevanten Zuordnungen. –
Code wurde veröffentlicht. –
Bearbeiten Sie Ihre Frage und geben Sie den Code dort ein, anstatt ihn als Antwort zu posten ... dann löschen Sie Ihre Antwort. –