2012-06-08 13 views
15

Ich möchte die CRUD für Benutzer einrichten, nur für Administratoren meiner Webanwendung. So in routes.rb :Rails: form_for namespaced Ressource

namespace :admin do 
    resources :user 
end 

was bedeutet dies:

admin_user_index GET /admin/user(.:format)     admin/user#index 
       POST /admin/user(.:format)     admin/user#create 
    new_admin_user GET /admin/user/new(.:format)    admin/user#new 
edit_admin_user GET /admin/user/:id/edit(.:format)   admin/user#edit 
     admin_user GET /admin/user/:id(.:format)    admin/user#show 
       PUT /admin/user/:id(.:format)    admin/user#update 
       DELETE /admin/user/:id(.:format)    admin/user#destroy 

Show, Index Arbeit gut, aber bearbeiten und neu nicht. Ich erhalte diesen Fehler in der _form ersten Zeile:
nicht definierte Methode `user_path‘ für # < #: 0x007fb6645c6378>

was das ist:

Wie kann ich form_for mit einer Namespace-Ressource?

Antwort

38

Sie den Namen des Namespace hinzufügen können Sie die URL sagen als Symbol:

<%= form_for [:admin, @user] do |f| %> 
+1

Awesome! Danke =) =) – Barbared

+1

Oh Mann, ich habe meinen Schwanz für ungefähr eine Stunde gejagt, bis ich diese Antwort fand. – janosrusiczki

3

Wenn Sie form_for verwenden, wird davon ausgegangen, dass der entsprechende Pfad [Modellname] _path lautet. Sie müssen es explizit mit

form_for @user, url: admin_user_path