Rails:form_for命名空间资源

时间:2012-06-08 17:10:47

标签: ruby-on-rails namespaces routes crud form-for

我想为用户设置CRUD,仅适用于我的Web应用程序的管理员。 所以在routes.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与命名空间资源一起使用?

2 个答案:

答案 0 :(得分:38)

您可以将名称空间的名称添加为符号:

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

答案 1 :(得分:3)

使用form_for时,它假定相应的路径是[model_name] _path。你必须用

明确地告诉它网址
form_for @user, url: admin_user_path