Ich benutze das Rails Resource_Controller-Plugin. Ich habe einen ReleasesController, der in einem UsersController und einem ProjectsController verschachtelt ist.Rails Verschachtelte Ressourcenzugriffsproblem in Resource_Controller
Resource_controller schlägt fehl, wenn es versucht, die Freigabe von User zu ziehen, aber von Project erfolgreich ist. Das Problem unter Benutzer besteht darin, das Release-Ergebnis in einem Objekt vom Typ Enumerable :: Enumerator und nicht in einem Release zu finden. Derselbe Prozess, um ein Release unter Project zu finden, führt zur Identifizierung der richtigen Release-Instanz.
der R_c Code Graben durch, ich habe ruft die Netto-Methoden herausgefunden, das ich das Problem innerhalb Skript/Konsole dupliziert haben:
>> Project.first.releases.find 17
=> #<Release id: 17, project_id: 1, name: "FORTEEN", lock_version: 10, deleted_at: nil, created_at: "2009-06-22 17:56:10", updated_at: "2009-06-22 19:48:47">
>> User.first.releases.find 17
=> #<Enumerable::Enumerator:0x599e29c>
Jede Methode Release auf dem Enumerable verwendet :: Enumerator schlägt fehl , Na sicher. Hier sind die Definitionen der Freigabemethoden:
User:
def projects
# active is a named_scope on Project
employer ? employer.projects.active : Project.active
end
def releases
projects.collect { |p| p.releases }.flatten
end
Project:
has_many :releases, :dependent => :destroy
Ich benutze die User.projects-Methode im ProjectsControler ohne Schwierigkeit. Ich vermute, das Problem liegt in der Definition der User.releases-Methode, aber ich schätze Vorschläge zur Behebung.
Hier sind meine Route Definitionen:
map.resources :projects do |project|
project.resources :releases, :member => { :restore => :get }
end
map.resources :releases,
:member => { :restore => :get },
:except => [ :new, :create ]
map.resources :users, :member_path => '/:id', :nested_member_path =>
'/:user_id' do |user|
user.resources :projects
user.resources :releases,
:member => { :restore => :get },
:except => [ :new, :create ]
end
Dank!
dr
Wenn Sie die Definition der Routen zeigen, könnte es helfen. – jcoffey
Ich würde hinzufügen, dass ich denke, das spezielle Problem bezieht sich auf User.Releases, die ein tatsächliches Array eher als einen Verbandsproxy zurückgeben, den ich denke, r_c erwartet. –
Wegdefinitionen: map.resources: Benutzer,: member_path => '/: id',: nested_member_path => '/: user_id' do | user | user.resources: Projekte user.resources: Mitteilungen, : member => {: restore =>: get}, : außer => [: neu,: create] Ende map.resources: Projekte tun | Projekt | project.resources: Mitteilungen: member => {: restore =>: get} Ende map.resources: Mitteilungen, : member => {: restore =>: get}, : außer => [: neu,: erstellen] –