Rails命名空间错误?

omn*_*nse 3 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我有这个config/routed.db:

namespace :admin do
  resources :users
  resources :events
end
Run Code Online (Sandbox Code Playgroud)

User使用脚手架Rails提供了生成模型,然后我只使用Rails'生成了一个admin/admin控制器,generate并简单地将所有与用户相关的东西移动到controllers/views/helpers中的admin子目录中.是的,我确实必须添加admin_几个地方,并在表格部分我不得不form_for(@user)改为form_for([:admin, @user]).

当我尝试创建一个新用户(这是我POST的用户数据)时,我收到以下错误消息:

undefined method `user_url' for #<Admin::UsersController:0x13f408e0>
Run Code Online (Sandbox Code Playgroud)

应用程序级跟踪显示此处引发错误:

app/controllers/admin/users_controller.rb:47:in `create'
Run Code Online (Sandbox Code Playgroud)

引发此错误的代码行:

format.html { redirect_to @user, :notice => 'User was successfully created.' }
Run Code Online (Sandbox Code Playgroud)

上面的行在respond_to块内.

所以,我有两个问题:

  1. 我该如何解决这个问题?
  2. 这样做有更智能,更好的轨道方式吗?

此外,如果你建议我用更聪明,更好的轨道方式重新做这个奖励积分!好吧,无论如何我会这样做!:d


更新

哦,我差点忘了可能有用的东西!我也Admin::UsersController继承了Admin::AdminController(通常继承自ApplicationController):

Admin::UsersController < Admin::AdminController

Thi*_*ilo 5

您还需要在重定向中使用命名空间:

redirect_to [:admin, @user] #...
Run Code Online (Sandbox Code Playgroud)

要么

redirect_to admin_user_path(@user) #...
Run Code Online (Sandbox Code Playgroud)

  • 你可以找到`rake routes`的具体路线.除此之外,请查看[本指南](http://guides.rubyonrails.org/routing.html). (2认同)