Ruby on rails 如何使用Desive和rails两种不同型号的两种不同定制注册表单?

Ruby on rails 如何使用Desive和rails两种不同型号的两种不同定制注册表单?,ruby-on-rails,ruby,ruby-on-rails-3,devise,rails-routing,Ruby On Rails,Ruby,Ruby On Rails 3,Devise,Rails Routing,我有两种不同的职业和雇主模式。两者都需要一个特定的注册页面。他们有一些共同点,但更多的不是单一的表格。我也在使用Desive。以下是模型: class Professional < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authen

我有两种不同的职业和雇主模式。两者都需要一个特定的注册页面。他们有一些共同点,但更多的不是单一的表格。我也在使用Desive。以下是模型:

class Professional < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

validates_presence_of :name, :email, :phone_number, :address, :city, :state, :zip, :skills, 
   :experience, :languages, :software, :education, :pay_range, :bio
validates :phone_number, format: /\(?(\d{3})\)?[\W\D]?(\d{3})[\W\D]?(\d{4})/
validates :email, format: /\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/

has_many :jobs
has_one :resume
has_many :reviews, as: :reviewable
has_many :contracts
has_many :employers, through: :contracts
has_one :user, :as => :rolable

end
以下是routes.rb:

 Rails.application.routes.draw do
   devise_for :professionals
   devise_for :employers

   mount JasmineRails::Engine => '/specs' if defined?(JasmineRails)

   root to: 'pages#home'

   resources :professionals 
   resources :employers
 end
这是我的rake路由:(抱歉格式不好)

以下是控制器:

   class EmployersController < ApplicationController

     before_action :authenticate_employer!

     def index

     end

     def new
       @employer = Employer.new
     end  

     def edit
       @employer = current_employer
     end

     def update
       @employer = Employer.find(params[:id])
       @employer.update_attributes(employer_params)
       redirect_to employers_path 
     end

     def employer_params
       params.require(:employer).permit(:name, :phone_number, :address, 
         :office_type, :number_of_hygenists, :assisted?, :software_type, 
         :paperless?, :patients_per_day, :parking, :languages_required, 
         :about, :city, :state, :zip)
     end
class EmployersController
以及:

class ProfessionalsController

任何帮助都会很好,我有点新,也有点不熟悉rails,但大部分都是新手

我觉得你的问题不太清楚。虽然我猜你想为Desive定制控制器。您需要创建一个新的控制器,如注册控制器,并覆盖Desive注册控制器

class RegistrationsController < Devise::RegistrationsController
  def create
    #Insert Your Logic here
  end
end
希望能有帮助

编辑:

您还可以为不同的角色执行不同的注册操作。您可以为专业用户定义专业用户注册方法,为员工定义员工注册方法。您可能必须在路由中定义这些操作。见以下示例

路线

devise_scope :user do
    post "professional/register" =>"registrations#employee_register"
end

devise_scope :user do
    post "employee/register" =>"registrations#professional_user_register"
end
登记管理员

def employee_register
  #Employee Register Code
end

def professional_user_register
  #Professonal User Register Code
end

我觉得你的问题不清楚。虽然我猜你想为Desive定制控制器。您需要创建一个新的控制器,如注册控制器,并覆盖Desive注册控制器

class RegistrationsController < Devise::RegistrationsController
  def create
    #Insert Your Logic here
  end
end
希望能有帮助

编辑:

您还可以为不同的角色执行不同的注册操作。您可以为专业用户定义专业用户注册方法,为员工定义员工注册方法。您可能必须在路由中定义这些操作。见以下示例

路线

devise_scope :user do
    post "professional/register" =>"registrations#employee_register"
end

devise_scope :user do
    post "employee/register" =>"registrations#professional_user_register"
end
登记管理员

def employee_register
  #Employee Register Code
end

def professional_user_register
  #Professonal User Register Code
end

Desive允许您设置任意多个Desive模型

可以为每个模型配置视图


Desive允许您设置任意多个Desive模型

可以为每个模型配置视图


根据每个专业人员和雇主属性的不同,为什么不在用户模型中设置一个标志,例如用户类型,可以由雇主或专业人员填充,具体取决于每个专业人员和雇主属性的不同,为什么不在用户模型中设置一个标志,例如用户类型,可以填充雇主或专业人员?我想这就是我想要做的。一个问题……如果我想根据用户、专业人士或雇主的链接显示不同的视图,我会怎么做。我想我会在createsayif professional和else中加入一些逻辑,并显示注册视图。我只是不知道怎么做,因为他们,用户,还没有被定义。他们还没有报名。如果我错了,请纠正我。见上面的代码。我已经编辑了答案。对于不同的角色,您可以有不同的操作。希望它能解决你的问题。我想这就是我想做的。一个问题……如果我想根据用户、专业人士或雇主的链接显示不同的视图,我会怎么做。我想我会在createsayif professional和else中加入一些逻辑,并显示注册视图。我只是不知道怎么做,因为他们,用户,还没有被定义。他们还没有报名。如果我错了,请纠正我。见上面的代码。我已经编辑了答案。对于不同的角色,您可以有不同的操作。希望它能解决你的问题。
devise_scope :user do
    post "professional/register" =>"registrations#employee_register"
end

devise_scope :user do
    post "employee/register" =>"registrations#professional_user_register"
end
def employee_register
  #Employee Register Code
end

def professional_user_register
  #Professonal User Register Code
end