我正在使用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
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
现在,当我去看医疗中心的表演时,它显示为空白。
答案 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