2012-06-08 18 views
15

Tôi muốn thiết lập CRUD cho người dùng, chỉ dành cho quản trị viên của ứng dụng web của tôi. Vì vậy, trong routes.rb:Rails: form_for namespaced resource

namespace :admin do 
    resources :user 
end 

có nghĩa này:

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, việc chỉ số tốt nhưng chỉnh sửa và mới thì không. Tôi cứ bị lỗi này trong dòng đầu tiên _form:
phương pháp xác định 'user_path' cho # < #: 0x007fb6645c6378>

đó là thế này:

Làm thế nào tôi có thể sử dụng form_for với tài nguyên không gian tên?

Trả lời

38

Bạn có thể thêm tên của namespace như một biểu tượng:

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

Awesome! Thanks =) =) – Barbared

+1

Oh người đàn ông, tôi đã theo đuổi đuôi của tôi trong khoảng một giờ cho đến khi tôi tìm thấy câu trả lời này. – janosrusiczki

3

Khi bạn sử dụng form_for, nó giả định rằng đường dẫn thích hợp là [model_name] _path. Bạn cần phải rõ ràng nói với nó url với

form_for @user, url: admin_user_path