我有此设置。
用户有很多诊所,而诊所有很多从业人员。诊所属于用户,从业者属于诊所。
我正在使用邪恶的向导进行注册。这些步骤是:用户信息,诊所信息,从业者信息。
注册后,用户应该可以将更多的从业人员添加到诊所,但是我不确定该怎么做。
我有一个概述页面,在这里我将列出该特定诊所的所有从业者,并且还有一个添加新的从业者链接,单击该链接将为新的从业者启动从业者信息注册步骤,并将医生与诊所联系起来。
我想这很简单,但我不知道该怎么做。试图搜索google,但找不到有关此操作的说明。
user.rb
class User < ApplicationRecord
has_many :services, dependent: :destroy
accepts_nested_attributes_for :services, reject_if: :all_blank, allow_destroy: true
has_many :educations, dependent: :destroy
accepts_nested_attributes_for :educations, reject_if: :all_blank, allow_destroy: true
has_many :awards, dependent: :destroy
accepts_nested_attributes_for :awards, reject_if: :all_blank, allow_destroy: true
has_many :user_professions, dependent: :destroy
has_many :professions, through: :user_professions
has_many :user_memberships, dependent: :destroy
has_many :memberships, through: :user_memberships
has_many :user_specialities, dependent: :destroy
has_many :specialities, through: :user_specialities
has_many :clinics, dependent: :destroy
accepts_nested_attributes_for :clinics, reject_if: :all_blank, allow_destroy: true
has_one_attached :clinic_logo
accepts_nested_attributes_for :clinic_logo_attachment, allow_destroy: true
has_one_attached :practitioner_image
has_many_attached :clinic_images
# Note that implicit association has a plural form in this case
scope :with_eager_loaded_images, -> { eager_load(images_attachments: :blob) }
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
after_create :send_admin_mail
def send_admin_mail
UserMailer.send_welcome_email(self).deliver_later
end
end
clinic.rb
class Clinic < ApplicationRecord
belongs_to :user
has_many :practitioners, dependent: :destroy
accepts_nested_attributes_for :practitioners, reject_if: :all_blank, allow_destroy: true
end
practitioner.rb
class Practitioner < ApplicationRecord
belongs_to :clinic
def current_step?(step_key) current_step == step_key end
enum practitioner_gender: { Mand: 0, Kvinde: 1 }
def self.genders_for_select
practitioner_genders.keys.map{ |x| [x.humanize, x] }
end
end
userprofiles / practitioners.html.erb这是我列出所有从业人员的页面,用户应该可以单击添加新的从业人员按钮。
<div class="content-container">
<div class="content practitioners">
<ul class="practitioners">
<li class="practitioner"><a class="overlay"
href="/partner/practitioners/5e289036c3bbe8770f417830"></a>
<div class="image">
<% if @current_user.clinic_logo.attached? %>
<%= image_tag @current_user.clinic_logo.variant(resize: "100x100")%>
<% else %>
<div class="image"
style="background-image: url("https://betterwing.s3.amazonaws.com/images/default-practitioner.png");">
</div>
<% end %>
<%= link_to (@current_user.first_name), practitioner_info_path(@current_user) %>
</div>
<h4 class="name">sdad sad</h4>
<div class="btn-container delete"><button class="btn pink" type="button"><span class="flex"><i
class="material-icons icon ">delete</i></span></button></div>
</li>
<li class="AddPractitioner"><a class="overlay" href="/partner/practitioners/new"></a>
<div class="image"><i class="material-icons icon ">add</i></div>
<h4 class="name">Add new practitioner</h4>
</li>
</ul>
</div>
</div>
routes.rb
Rails.application.routes.draw do
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
devise_for :users, controllers: {:registrations => "users/registrations"
}
resources :registration_steps
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'pages#index'
get 'about', to: 'pages#about'
get 'team', to: 'pages#team'
get 'faqs', to: 'pages#faqs'
get 'faqspractitioners', to: 'pages#faqspractitioners'
get 'faqsusers', to: 'pages#faqsusers'
get 'login', to: 'pages#login'
get 'signup', to: 'pages#signup'
get 'search', to: 'pages#search'
get 'practitioner', to: 'pages#practitioner'
get "userprofiles/user_info" => "userprofiles#user_info", as: "user_info"
get "userprofiles/clinic_info" => "userprofiles#clinic_info", as: "clinic_info"
get "userprofiles/practitioner_info" => "userprofiles#practitioner_info", as: "practitioner_info"
get "userprofiles/practitioners" => "userprofiles#practitioners", as: "practitioners"
patch "userprofiles/user_info" => "userprofiles#update"
patch "userprofiles/clinic_info" => "userprofiles#update"
patch "userprofiles/practitioner_info" => "userprofiles#update"
devise_scope :user do
scope module: :users do
resources :registrations, only: [] do
member do
delete :delete_image_attachment
end
end
end
end
end
userprofiles_controller.rb
class UserprofilesController < ApplicationController
# fill the methods as you need, you can always get the user using current_user
def user_info
end
def clinic_info
@user = current_user
@clinic = Clinic.all
end
def practitioner_info
@user = current_user
end
def practitioners
@user = current_user
@practitioner = Practitioner.new
end
def update
if current_user.update(user_params)
redirect_to root_path
else
render :edit
end
end
private
def user_params
params.require(:user)
.permit(:first_name, :last_name, :email, :password, :password_confirmation, :phone,
:clinic_logo,
:practitioner_image,
clinic_images: [],
profession_ids: [],
speciality_ids: [],
services_attributes: [:id, :description, :name, :duration, :price, :_destroy],
educations_attributes: [:id, :name, :place, :year, :_destroy],
membership_ids: [],
awards_attributes: [:id, :name, :year, :_destroy],
clinics_attributes: [:id, :clinic_name, :clinic_address, :clinic_zip_code, :clinic_municipality, :clinic_about, :clinic_mail, :clinic_phone, :clinic_website, :clinic_city, :_destroy,
practitioners_attributes: [:id, :public_health_insurance, :practitioner_gender, :practitioner_first_name, :practitioner_last_name, :practitioner_description, :practitioner_mail, :practitioner_phone, :practitioner_website, :_destroy]])
end
end
我有几个问题需要跟进。
href="/partner/practitioners/5e289036c3bbe8770f417830"
?<li class="AddPractitioner">
<a class="overlay" href="/partner/practitioners/new"></a>
<div class="image">
<i class="material-icons icon ">add</i>
</div>
<h4 class="name">Add new practitioner</h4>
</li>
将不会显示任何链接,您应该将其更改为
<li class="AddPractitioner">
<%= link_to [:partner, :practitioners, :new], class: 'overlay' do %>
<div class="image">
<i class="material-icons icon ">add</i>
</div>
<% end %>
<h4 class="name">Add new practitioner</h4>
</li>