仅显示来自current_user Rails 4的寄存器

时间:2015-12-03 00:48:12

标签: ruby-on-rails

我试图只显示创建寄存器的用户(医生)的寄存器(患者)

在我的控制器中我有:

  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

¿我该怎么做?

感谢您的帮助!

1 个答案:

答案 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!