Rails: ресурс с пространством имен form_for

Я хочу настроить CRUD для пользователей, доступный только для администраторов моего веб-приложения. Итак, в route.rb:

namespace :admin do
  resources :user
end

что означает это:

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

Показать, индекс работать нормально, но редактировать и новый нет. Я продолжаю получать эту ошибку в первой строке _form:
неопределенный метод `user_path' для #‹#:0x007fb6645c6378>

что это:

Как я могу использовать form_for с ресурсом с пространством имен?


person Barbared    schedule 08.06.2012    source источник


Ответы (2)


Вы можете добавить имя пространства имен в качестве символа:

 <%= form_for [:admin, @user] do |f| %>
person miked    schedule 08.06.2012
comment
О, чувак, я гонялся за своим хвостом около часа, пока не нашел этот ответ. - person janosrusiczki; 07.04.2013

При использовании form_for предполагается, что соответствующий путь — [model_name]_path. Вы должны явно указать URL-адрес с

form_for @user, url: admin_user_path
person cdesrosiers    schedule 08.06.2012