查找与特定medical_center关联的所有患者,无需嵌套路由

时间:2014-05-24 20:31:20

标签: ruby-on-rails sqlite

我正在使用rails4和ruby2。我有两个模型:医疗中心和病人。医疗中心有很多病人。我没有嵌套他们的路线。请帮助我找到特定medical_center_id的所有患者,并将其显示在医疗中心的表演行动中。

class MedicalCentersController < ApplicationController
before_action :set_medical_center, only: [:show, :edit, :update, :destroy]
before_action :require_signin!

def index
@medical_centers = MedicalCenter.all
end

def show
@patients=Patient.find(:all, :conditions => ["medical_center_id = ?", params[:medical_center_id]])
end

def new
@medical_center = MedicalCenter.new
end

def edit
end

def create
@medical_center = MedicalCenter.new(medical_center_params)
respond_to do |format|
  if @medical_center.save
    format.html { redirect_to @medical_center, notice: 'Medical center was successfully created.' }
    format.json { render action: 'show', status: :created, location: @medical_center }
  else
    format.html { render action: 'new' }
    format.json { render json: @medical_center.errors, status: :unprocessable_entity }
  end
 end
end


private
def set_medical_center
  @medical_center = MedicalCenter.find(params[:id])
end
def medical_center_params
  params.require(:medical_center).permit(:name, :address, :phone_no)
end
end

MedicalCenter class

的show.html.erb
Associated patients:
<% @patients.each do |s| %>
  <ul>
<li><%=link_to s.name, patient_path(s)%></li>
  </ul>
<%end%>

 routes.rb
  resources :medical_centers
  resources :patients

现在,当我去看医疗中心的表演时,它显示为空白。

1 个答案:

答案 0 :(得分:2)

尝试更改show method这样的MedicalCentersController

def show
@patients = Patient.find(:all, :conditions => ["medical_center_id = ?",@medical_center.id])
end

<强>更新

如果您想将此代码放入MedicalCenter模型,那么您必须这样做

#medical_center.rb

def some_method_name
@med = self.find(params[:id])
@patients = Patient.find(:all, :conditions => ["medical_center_id = ?",@med.id])
end