2012-06-08 14 views
15

Chcę ustawić CRUD dla użytkowników, dostępny tylko dla administratorów mojej aplikacji internetowej. Więc w routes.rb:Szyny: form_for namespaced resource

namespace :admin do 
    resources :user 
end 

która oznacza:

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, praca Indeks w porządku, ale edytować i nowy nie. Wciąż otrzymuję ten błąd w _form pierwszej linii:
metoda niezdefiniowany `user_path” dla # < #: 0x007fb6645c6378>

który brzmi:

Jak mogę użyć form_for z zasobem o określonej nazwie?

Odpowiedz

38

Możesz dodać nazwę przestrzeni nazw jako symbol:

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

Awesome! Thanks =) =) – Barbared

+1

Oh człowieku, ścigałem mój ogon przez około godzinę, aż znalazłem tę odpowiedź. – janosrusiczki

3

Kiedy używasz form_for, zakłada, że ​​właściwą ścieżką jest [nazwa_modelu] _ścieżka. Trzeba wyraźnie powiedzieć, że adres URL z

form_for @user, url: admin_user_path 
Powiązane problemy