Rails命名空间错误?

时间:2012-11-04 23:44:47

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2

我在config/routed.db

中有这个
namespace :admin do
  resources :users
  resources :events
end

我使用脚手架Rails提供了User模型,然后我只使用Rails'generate生成了一个admin / admin控制器,并简单地将所有与用户相关的内容移动到admin子 - 控制器/视图/帮助器内的目录。是的,我确实必须在一些地方添加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. 这样做有更聪明,更好的轨道方式吗?

  3. 另外,如果你建议我在更聪明,更好,有轨道中重新做这件事,那么奖励积分!好吧,无论如何我会这样做! :d


    更新

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

    Admin::UsersController < Admin::AdminController

1 个答案:

答案 0 :(得分:5)

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

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

redirect_to admin_user_path(@user) #...