-1

当时我有两个模型:Patient(有很多)和 Treatment(属于)。

到目前为止,我在患者展示页面上显示了新治疗的表格,并且一切正常。但现在我想将治疗表格外包到一个新页面。为了更好地可视化它:

 <%= render "treatments/form" %>

改成:

 <% link_to "new", "treatments/form" %>

所以我的问题是我总是成为一个路线错误:

 No route matches [GET] "/patients/treatments/form"

但是路线看起来如此,我认为它们会起作用:

resources :patients do
  resources :treatments
  resources :paintings
end

以及治疗的控制者:

class TreatmentsController < ApplicationController
def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.create(params[:treatment])
    redirect_to patient_path(@patient)
end

def destroy
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.find(params[:id])
    @treatment.destroy
    redirect_to patient_path(@patient)  
end
end   
4

1 回答 1

1

由于您的提议form实际上只是一种创建新患者治疗的方法,因此您应该考虑遵循 RESTful 约定并创建一个TreatmentsController名为的新操作new

# app/controllers/treatments_controller.rb
class TreatmentsController < ApplicationController
def new
    @patient = Patient.find(params[:patient_id])
end

由于您的治疗路线是患者嵌套资源路线的嵌套资源,因此您需要将 传递patient_id给您的链接助手:

<%= link_to "New Patient Treatment", new_patient_treatment_path(@patient) %>

这将使您能够正确访问treatment#new.

于 2013-06-27T16:10:05.173 回答