资源中的新路由生成而不是params [:id] params [:patient_id]

时间:2013-11-17 13:41:21

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我为我的一个资源添加了一条新路线:

  resources :patients do
     get 'warte'
  end

这会产生:

patient_warte_path  GET     /patients/:patient_id/warte(.:format)   patients#warte
patients_path   GET     /patients(.:format)     patients#index 
new_patient_path    GET     /patients/new(.:format)     patients#new
edit_patient_path   GET     /patients/:id/edit(.:format)    patients#edit
patient_path    GET     /patients/:id(.:format)     patients#show 
.....

我不知道的是为什么新路线会产生params[:patient_id

我的意思是在我的控制器中我有:

 before_action :set_patient, only: [:show, :edit, :update, :destroy, :warte]

  def set_patient
  @patient = Patient.find(params[:id])
  session[:patient] = @patient.id
  end

但是现在我得到了错误:当我调用warte动作时! Thanks1

  Couldn't find Patient without an ID

1 个答案:

答案 0 :(得分:1)

您缺少配置以使其使用id。您需要定义它是:member还是:collection操作:

resources :patients do
  get 'warte', on: :member
end