3

我有这个config/routed.db

namespace :admin do
  resources :users
  resources :events
end

User使用 Rails 提供的脚手架生成了模型,然后我简单地使用 Rails 生成了一个管理员/管理员控制器,generate并将所有与用户相关的东西移动到控制器/视图/帮助器内的管理子目录中。是的,我确实必须admin_在几个地方添加,并且在部分表单中我必须将其更改form_for(@user)form_for([:admin, @user]).

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

undefined method `user_url' for #<Admin::UsersController:0x13f408e0>

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

app/controllers/admin/users_controller.rb:47:in `create'

引发此错误的代码行:

format.html { redirect_to @user, :notice => 'User was successfully created.' }

上面的行在respond_to块内。

所以,我有两个问题:

  1. 我该如何解决这个问题?
  2. 有没有更聪明、更好的 Rails 方式来做到这一点?

此外,如果您建议我以更智能、更好的方式重新执行此操作,则可以加分!好吧,无论如何我都会这样做!:D


更新

哦,我差点忘记了一些可能相关的东西!我还Admin::UsersController继承自Admin::AdminController(通常反过来继承自ApplicationController):

Admin::UsersController < Admin::AdminController

4

1 回答 1

5

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

redirect_to [:admin, @user] #...

或者

redirect_to admin_user_path(@user) #...
于 2012-11-05T00:00:58.180 回答