2011-07-11 109 views
0

Models:based on rails 3 guidehas_many通過複選框驅動表格

class Physician < ActiveRecord::Base 
    has_many :physician_specialities 
    has_many :specialities, :through => :physician_specialities 
end 

class speciality < ActiveRecord::Base 
    has_many :physician_specialities 
    has_many :physicians, :through => :physician_specialities 
end 

class PhycianSpeciality < ActiveRecord::Base 
    belongs_to :physician 
    belongs_to :patient 
end 

和數據庫架構是這樣的:

Physician 
    id 
    name 
Speciality 
    id 
    name 
PhycianSpeciality 
    id 
    physician_id 
    speciality_id 
    description 

我想有一個形式,它能夠特產添加到醫生和寫這個特殊的小描述(根據醫生)。

我想我可以使用這樣的東西Quick Tip: has_many :through => checkboxes

<% form_for @physician do -%> 
    <% Speciality.all.each do |group| -%> 
    <div> 
     <%= check_box_tag :speciality_ids, speciality.id, @user.specialities.include?(speciality), :name => 'user[speciality_ids][]' -%> 
     <%= label_tag :speciality_ids, speciality.name -%> 
    </div> 
    <% end -%> 
    <%= submit_tag -%> 
<% end -%> 

但我不知道我在哪裏可以把專業描述...

回答

0

它看起來像你對我缺少至少兩個關係表/模型。

  • SpecialtyDescription
  • PhysicianSpecialityDescription

這樣,你可以有PhysicianSpeciality & PhysicianSpecialityDescription(PhysicianSpeciality_id,SpecialtyDescription_id)& SpecialtyDescription之間的正確連接。

0

由於說明正在等待在PhysicianSpecialty中創建加入記錄,因此我只會將說明作爲text_area傳遞並整理出來,等待醫師的保存。

physicians_controller.rb

# i imagine ur update method would look kinda like this 
def update 
    @physician = Physician.find(params[:id]) 
    if @physician.update_attributes(params[:physician]) 
    physician_specialty = PhysicianSpecialty.find_by_specialty_id(:specialty_id => specialty.id) 
    physician_specialty.update_attribute(:description, params[:description]) 
    else 
    render :action => :edit 
    end 
end