2014-09-13 118 views
0

我是新來的rails。 使用導軌4和設計。我試圖用一個名爲role的類變量來使用單用戶模型,這將決定用戶是客戶還是管理員。Rails設計額外用戶註冊

我創建了/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 

我有一個客戶註冊控制器(在控制器/用戶/ 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

首先的(特別是如果你是新來的Rails):堅持公約,除非你真的要改變他們。
我看不到,爲什麼需要重新命名sign_up。

第二種:您嘗試路由到控制器Devise::RegistrationsController的操作sign_up2,但該控制器沒有方法sign_up2
也許你想路由到您自己的控制器Users::RegistrationsController,比你的路線是這樣的:

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

但是你自己的控制器有沒有作用「sign_up2」要麼。

三:(這就是你看到的錯誤)
複製開始與

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

resource沒有設置視圖。在Devise::RegistrationsController動作new(這正是sign_up路線標準devise)與

build_resource({}) 

您需要類似的在控制器中的東西sing_up2方法開始。