2012-06-08 7 views
15

Desidero configurare il CRUD per gli utenti, disponibile solo per gli amministratori della mia applicazione web. Così in routes.rb:Rails: form_for risorsa namespace

namespace :admin do 
    resources :user 
end 

che significa che questo:

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, lavoro bene, ma indice di modifica e nuova non lo fanno. Continuo a ricevere questo errore nella prima riga _form:
metodo non definito `user_path' per # < #: 0x007fb6645c6378>

che è questo:

Come posso usare form_for con una risorsa con nomi diversi?

risposta

38

È possibile aggiungere il nome del namespace come simbolo:

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

Impressionante! Grazie =) =) – Barbared

+1

Oh uomo, ho seguito la mia coda per circa un'ora finché non ho trovato questa risposta. – janosrusiczki

3

Quando si utilizza form_for, si presuppone che il percorso appropriato sia [nome_modello] _path. Devi dire esplicitamente l'url con

form_for @user, url: admin_user_path