Ruby on rails 如何使用Desive和rails两种不同型号的两种不同定制注册表单?
我有两种不同的职业和雇主模式。两者都需要一个特定的注册页面。他们有一些共同点,但更多的不是单一的表格。我也在使用Desive。以下是模型: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
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