Rails设计额外的用户注册

时间:2014-09-13 12:10:45

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我是铁杆新手。 使用导轨4和设计。我试图将单用户模型与名为role的类变量一起使用,这将确定用户是客户还是管理员。

我创建了/views/devise/registrations/new.html.erb的副本 发送至:/views/devise/registrations/sign_up2.html.erb

然后在我的routes.rb中添加:

devise_scope :user do
  get "users/sign_up2"=> "devise/registrations#sign_up2", :as => "sign_up2"
end

但是我一直收到错误:

First argument in form cannot contain nil or be empty

我有一个客户注册控制器(在controllers / users / registration_controller.rb)

class Users::RegistrationsController < Devise::RegistrationsController
 include ApplicationHelper

 def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :profile_name, :role, :email, :password, :password_confirmation)
end

1 个答案:

答案 0 :(得分:0)

首先(特别是如果你是Rails的新手):坚持惯例,除非你真的需要改变它们。
我看不出,为什么sign_up需要重命名。

第二:您尝试路由到控制器sign_up2的操作Devise::RegistrationsController,但该控制器没有方法sign_up2
也许您想要路由到您自己的Controller Users::RegistrationsController,而不是您的路线:

device_scope :user do
  get "users/sing_up2" => "users/registrations#sign_up2", as: "sign_up2"
end

但你自己的控制器没有动作&#34; sign_up2&#34;任

第三:(那就是你看到的错误)
您复制的视图以

开头
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>

但未设置resource。在Devise::RegistrationsController中,操作newsign_up路由到标准devise的位置)以

开头
build_resource({})

您需要在控制器sing_up2方法中使用类似的东西。