簡體   English   中英

嵌套資源Rails沒有路線匹配id = nil

[英]Nested resources Rails no route matches id = nil

我正在處理嵌套路線,但我感覺有些東西丟失了,我得到了這個錯誤:

No route matches {:action=>"edit", :controller=>"consultations", :id=>nil, :patient_id=>#<Patient id: 2 ...

路線:

resources :patients, shallow: true do
    resources :consultations
end

耙路| grep咨詢

patient_consultations GET /patients/:patient_id/consultations(.:format) consultations#index
POST /patients/:patient_id/consultations(.:format) consultations#create
new_patient_consultation GET /patients/:patient_id/consultations/new(.:format) consultations#new
edit_consultation GET /consultations/:id/edit(.:format) consultations#edit
consultation GET /consultations/:id(.:format) consultations#show
PATCH  /consultations/:id(.:format)  consultations#update
PUT    /consultations/:id(.:format)  consultations#update
DELETE /consultations/:id(.:format)  consultations#destroy

楷模:

class Patient < ActiveRecord::Base
  belongs_to :medic, :foreign_key => :medic_id
  has_many :consultations, :dependent => :destroy
  accepts_nested_attributes_for :consultations
end

class Consultation < ActiveRecord::Base
  belongs_to :patient, :foreign_key => :patient_id
end

查看: consultations / index.html.erb

<% @patient.consultations.each do |consultation| %>
  <%= link_to 'Edit', edit_consultation_path(patient_id: @patient, id: @consultation) %> <---ERROR
  <%= link_to 'Show', consultation(patient_id: @patient, id: @consultation) %> <---ERROR
  <%= link_to 'Destroy', consultation, method: :delete, data: { confirm: 'Are you sure?' } %> <---ERROR
<% end %>

我是否將錯誤的參數傳遞給edit_consultation_path(Patient_id:@ Patient,ID:@consultation)

有任何想法嗎? 提前致謝!

編輯:

控制器: controller / consultations_controller.rb

def index
  @patient.consultations = Consultation.all
end

您確定您有@consultation類的@consultation嗎?

您正在遍歷所有學生的咨詢,並將每個實例作為consultation

但是,您將@consultation作為id傳遞,這與consultation @consultation基本上為零。

您應該通過的是consultation ,而不是@consultation ,如下所示:

<% @patient.consultations.each do |consultation| %>
  <%= link_to 'Edit', edit_consultation_path(patient_id: @patient, id: consultation) %> <---ERROR
  <%= link_to 'Show', consultation_path(patient_id: @patient, id: consultation) %> <---ERROR
  <%= link_to 'Destroy', consultation_path(id: consultation.id), method: :delete, data: { confirm: 'Are you sure?' } %> <---ERROR
<% end %>

或者,甚至直接咨詢的id ,如下所示:

<% @patient.consultations.each do |consultation| %>
  <%= link_to 'Edit', edit_consultation_path(patient_id: @patient, id: consultation.id) %> <---ERROR
  <%= link_to 'Show', consultation_path(patient_id: @patient, id: consultation.id) %> <---ERROR
  <%= link_to 'Destroy', consultation_path(id: consultation.id), method: :delete, data: { confirm: 'Are you sure?' } %> <---ERROR
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM