1

我已经进行了设计设置,当新用户自己完成注册过程时效果很好,但在实施设计之前,管理员能够在我的旧用户控制器中创建用户和与之相关的行为。现在我在访问旧表单时正在使用设计,新操作触发正常,但是当我实际提交表单时,无论我做什么,它都会进入设计的注册控制器创建操作。我知道我可以覆盖控制器并复制我在旧用户控制器中的代码,但我想知道是否有办法防止某些调用出现这种行为?

我已经尝试专门为表单指定控制器和操作,但它什么也没做。

以下是我的路线中定义的两条相关路径:

                                         POST   /users(.:format)                                                           users#create
                       user_registration POST   /users(.:format)                                                           users/registrations#create

我要解决这个问题了吗?

4

1 回答 1

1

通常,当我使用设计时,我会为与用户相关的管理员 CRUD 创建一个单独的控制器。就像是:

# /app/controllers/admin
class Admin::UsersController < ApplicationController
  # your controller actions
end

# config/routes
namespace :admin do
  resources :users
end

我发现将它们全部分开使它更易于维护并且减少了头痛。

更新: Devise 添加它自己的路由和路由助手,因此您的 user_registration_path 和 POST /users 将被 devise 中给出的路由所取代,在这种情况下,它也是 /users 的 POST。您可以在 github 上找到这些路线的来源:https ://github.com/plataformatec/devise/blob/master/lib/devise/rails/routes.rb

附注:您在问题中引用的两条路径是相同的,只有第二条路径可以通过路由帮助程序访问,即 user_registration_path 或 user_registration_url ,而另一个大多数直接引用。

于 2012-07-19T02:50:23.913 回答