我试图只显示创建寄存器的用户(医生)的寄存器(患者)
在我的控制器中我有:
def index
# @patients = Patient.all
@medic = Medic.find(params[:id])
@patients = @medic.patients
end
我收到错误:找不到'id'=
的Medic在我看来,我有:
<% @patients.each do |patient| %>
<%= patient.name %>
<% end %>
在我的模特中,我有:
class Medic < ActiveRecord::Base
has_many :patients
end
class Patient < ActiveRecord::Base
belongs_to :medic
end
¿我该怎么做?
感谢您的帮助!
答案 0 :(得分:1)
您的params[:id]
方法默认情况下不能index
;它是一个收集路线而不是成员路线。因此,params[:id]
的值始终为nil
如果您想为某个medic
的患者编制索引,可以转到localhost:3000/patients?medic_id=x
并在您的控制器中使用
if params[:medic_id]
@patients = Patient.where(medic_id: params[:medic_id]).all
else
@patients = Patient.all
end
如果您使用devise
并且您已定义current_medic
,那么只需让当前医生使用
@patients = current_medic.patients
localhost:3000/patients
现在将显示患者或登录用户。
您必须向控制器添加before_action :authenticate_medic!
。