OK. Das ist verrückt.Ruby on rails Modell und Controller in verschiedenen Namespaces
Ich bin neu in RoR und ich möchte wirklich darauf eingehen, da alles, was ich bisher gesehen habe, es attraktiver macht für die Art von Arbeit, die ich mache.
Allerdings kann ich nicht scheinen sehr einfache Sache mit RoR zu erreichen.
möchte ich diese controlers:
/admin/blog/entries (index/show/edit/delete)
/admin/blog/categories (index/show/edit/delete)
/admin/blog/comments (index/show/edit/delete)
... and so on
Und diese Modelle:
Blog::Entry (table: blog_entries)
Blog::Category (table: blog_categories)
Blog::Comments (table: blog_comments)
... and so on
Jetzt habe ich schon, obwohl ziemlich viel Elend gegangen, diese Arbeit zu machen. Mein erster Versuch war Gerüste zu erzeugen (ich benutze 2.2.2). Ich habe mein Gerüst erzeugt, musste aber mein Modell bewegen und dann die Referenzen auf das Modell in meinem Controller fixieren (siehe Ruby on Rails model inside namespace can't be found in controller).
Das ist schon ein großer Schmerz, aber hey, ich habe es zur Arbeit gebracht. Nun, obwohl form_for nicht funktioniert und ich nicht herausfinden kann, wie man die URL-Helfer benutzt (ich habe keine Ahnung, wie diese heißen ... sie sind die automatisch generierten Methoden, die URLs an Controller zurückgeben, die mit einem Modell verbunden sind). Ich kann nicht herausfinden, wie sie heißt. Mein Model ist Blog :: Einträge. Ich habe versucht, mit der Ressourcenmethode der route.rb-Karte zu verfahren, aber kein Glück. Wenn ich versuche, form_for mit meinem Modell zu verwenden, erhalte ich diesen Fehler
undefined method `blog_entries_path' for #<ActionView::Base:0xb6848080>
Jetzt. Das ist wirklich ziemlich frustrierend. Ich werde die Organisation meines Codes nicht komplett zerstören, um dieses Framework zu verwenden, und wenn ich nicht herausfinden kann, wie ich diese einfache Aufgabe bewerkstelligen soll (ich habe das für mindestens 5 Stunden recherchiert), kann ich einfach nicht weitermachen.
Gibt es irgendwelche Ideen, wie dies zu erreichen ist?
Dank
EDIT
Hier sind meine Routen:
admin_blog_entries GET /admin_blog_entries {:controller=>"admin_blog_entries", :action=>"index"}
formatted_admin_blog_entries GET /admin_blog_entries.:format {:controller=>"admin_blog_entries", :action=>"index"}
POST /admin_blog_entries {:controller=>"admin_blog_entries", :action=>"create"}
POST /admin_blog_entries.:format {:controller=>"admin_blog_entries", :action=>"create"}
new_admin_blog_entry GET /admin_blog_entries/new {:controller=>"admin_blog_entries", :action=>"new"}
formatted_new_admin_blog_entry GET /admin_blog_entries/new.:format {:controller=>"admin_blog_entries", :action=>"new"}
edit_admin_blog_entry GET /admin_blog_entries/:id/edit {:controller=>"admin_blog_entries", :action=>"edit"}
formatted_edit_admin_blog_entry GET /admin_blog_entries/:id/edit.:format {:controller=>"admin_blog_entries", :action=>"edit"}
admin_blog_entry GET /admin_blog_entries/:id {:controller=>"admin_blog_entries", :action=>"show"}
formatted_admin_blog_entry GET /admin_blog_entries/:id.:format {:controller=>"admin_blog_entries", :action=>"show"}
PUT /admin_blog_entries/:id {:controller=>"admin_blog_entries", :action=>"update"}
PUT /admin_blog_entries/:id.:format {:controller=>"admin_blog_entries", :action=>"update"}
DELETE /admin_blog_entries/:id {:controller=>"admin_blog_entries", :action=>"destroy"}
DELETE /admin_blog_entries/:id.:format {:controller=>"admin_blog_entries", :action=>"destroy"}
home / {:action=>"index", :controller=>"index"}
/:controller/:action/:id
/:controller/:action/:id.:format
Das ist richtig dosn't aussehen. Hier ist meine routes.rb (Kommentare entfernt):
ActionController::Routing::Routes.draw do |map|
map.resources :admin_blog_entries
map.home '', :controller => 'index'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Aus Interesse, haben Sie andere Eintrag, Kategorie und Kommentar-Modelle in Ihrer Anwendung? Ich bin neugierig, warum Sie sich entschieden haben, sie in einen Namensraum zu setzen. –
Setzen Sie den Namespace in das Formular für und verlinken? form_for (: Blog, @entry) tun usw. Obwohl Sie möglicherweise besser mit verschachtelten Assoziationen arbeiten. Es sieht so aus, als ob du es überkomplizierst. – Jarrod
John: Ich mag es, meine Projekte so zu organisieren, dass jedes "Modul" getrennt ist. Verwenden Sie stattdessen Unterstriche (blog_entries, blog_categories), die ich in einen separaten Ordner legen möchte. – nlaq