当时我有两个模型:患者(有很多)和治疗(属于)。
到目前为止,我在患者展示页面上显示了新治疗的表格,并且一切正常。但现在我想将治疗表格外包给新页面。更好地可视化:
<%= 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
答案 0 :(得分: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
的嵌套路由。