link_to 助手未定义的方法
Undefined method by link_to helper
我需要通过 link 标签 post,但是 link 助手有问题。这是我的 link 标签
// 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'
我收到错误
#<#:0x007fd39283a4b0>
的未定义方法“add_doctor_patient_path”
我应该如何使用 link 助手来解决这个问题?
只需在路由中添加一个 as: 选项即可。
// routes.rb
get 'patients/:id/doctors' => 'patients#get_doctors',as: :patient_get_doctor
post 'patients/:id/doctors' => 'patients#add_doctor', as: :patient_add_doctor
然后在视图中:
// doctors.html.erb
<%= link_to "Ekle", patient_add_doctor_path(id: @patient.id), method: :post %>
您 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 ]
。 PatientsController 是放置用于检索和修改 Doctors 的逻辑的非常错误的地方。
我需要通过 link 标签 post,但是 link 助手有问题。这是我的 link 标签
// 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'
我收到错误
#<#:0x007fd39283a4b0>
的未定义方法“add_doctor_patient_path”我应该如何使用 link 助手来解决这个问题?
只需在路由中添加一个 as: 选项即可。
// routes.rb
get 'patients/:id/doctors' => 'patients#get_doctors',as: :patient_get_doctor
post 'patients/:id/doctors' => 'patients#add_doctor', as: :patient_add_doctor
然后在视图中:
// doctors.html.erb
<%= link_to "Ekle", patient_add_doctor_path(id: @patient.id), method: :post %>
您 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 ]
。 PatientsController 是放置用于检索和修改 Doctors 的逻辑的非常错误的地方。