我需要通过链接标记发布,但是链接帮助器存在问题。这是我的链接标记
// doctors.html.erb
<%= link_to "Ekle", [:add_doctor, @patient], method: :post %>
我的routes.rb
// routes.rb
get 'patients/:id/doctors' => 'patients#get_doctors'
post 'patients/:id/doctors' => 'patients#add_doctor'
我收到错误
#&lt;#:0x007fd39283a4b0&gt;
的未定义方法`add_doctor_patient_path'我应该如何使用链接助手摆脱问题?
答案 0 :(得分:1)
routes.rb
中的这一行显示您的get_doctors
路由接受一个参数:id
:
get 'patients/:id/doctors' => 'patients#get_doctors'
这意味着您应该使用相应的路径助手get_doctors_path
,并将其传递给Patient对象:
<%= link_to "Ekle", get_doctors_path(@patient), method: :post %>
P.S。您的路线令人费解,因为您可以通过使用资源丰富的路线as recommended by the Rails Guides来完成同样的事情,而不是定义您自己的自定义get
和post
路线,这样做可以节省很多时间麻烦:
resources :patients do
resources :doctors
end
这会产生例如patient_doctors_path
和new_patient_doctor_path
路径助手会分别自动路由到您的DoctorsController#get
和DoctorsController#new
方法,并且可以让您使用例如form_for [ @patient, :doctor ]
。对于检索和修改医生而言,PatientController非常错误。
答案 1 :(得分:0)
只需在路线上添加一个as:选项即可。
phrase
然后在视图中:
// routes.rb
get 'patients/:id/doctors' => 'patients#get_doctors',as: :patient_get_doctor
post 'patients/:id/doctors' => 'patients#add_doctor', as: :patient_add_doctor