我是铁杆新手。 使用导轨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
端
答案 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
中,操作new
(sign_up
路由到标准devise
的位置)以
build_resource({})
您需要在控制器sing_up2
方法中使用类似的东西。