#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Я пытаюсь сохранить полные имена всех пациентов в хэш-карте из моей таблицы базы данных, однако я получаю следующую ошибку :
param is missing or the value is empty: patient
в этой строке в контроллере моих пациентов:
def patient_params
params.require(:patient).permit(:Full_Name, :Age, :Sex, :Address, :PPS, :Medical_Card)
end
Я не уверен, где я ошибаюсь в этом, любая помощь была бы с благодарностью!
patients_controller.rb
def allP
# print out all
p=Hash.new
current_user.patients.all.each do |patient|
p.store("Full Name", patient.Full_Name)
end
end
index.html.erb
<%= button_to "Some Button", :method=> "allP" %>
Журнал ошибок
Started POST "/patients?method=allP" for 127.0.0.1 at 2019-03-14 00:36:54 0000
Processing by PatientsController#create as HTML
Parameters: {"authenticity_token"=>"lo2SRaVmEAHUdpqgknqT9iKPijEypaJ 8PX5Ad1igd/VTBbnRWsZy7akIVBx9c3eQnEmh6lljGm1sfEIDNs4Eg==", "met
hod"=>"allP"}
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 2], ["LIMIT", 1
]]
↳ /Users/j/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98
Completed 400 Bad Request in 3ms (ActiveRecord: 0.3ms)
ActionController::ParameterMissing (param is missing or the value is empty: patient):
app/controllers/patients_controller.rb:83:in `patient_params'
app/controllers/patients_controller.rb:37:in `create'
Комментарии:
1. Однако вы отправляете их, они не имеют «формы», которую запрашивает ваше приложение. Это должно быть что-то вроде
{ patient: { full_name: ..., age: ... } }
2. Правильно, я думаю, я понимаю, о чем вы говорите, поскольку пациент ожидает, что у него будут все эти атрибуты, я должен определить их в хэш-карте?
3. Если вы добавите выходные данные вашего сервера (где показаны отправленные параметры) к вашему вопросу (используя
edit
ссылку под тегами), было бы намного проще указать, в чем проблема. Но короткий ответ, вероятно, заключается в том, что ваша форма искажена.4. Где я могу получить вывод сервера?
5. С вашей консоли, на которой вы запускаете свое приложение.
Ответ №1:
Проверьте эти параметры (отформатированные для удобства чтения):
Started POST "/patients?method=allP" for 127.0.0.1 at 2019-03-14 00:36:54 0000
Processing by PatientsController#create as HTML
Parameters: {
"authenticity_token"=>"lo2SRaVmEAHUdpqgknqT9iKPijEypaJ 8PX5Ad1igd/VTBbnRWsZy7akIVBx9c3eQnEmh6lljGm1sfEIDNs4Eg==",
"method"=>"allP"
}
Итак, когда вы говорите:
def patient_params
params.require(:patient).permit(:Full_Name, :Age, :Sex, :Address, :PPS, :Medical_Card)
end
params.require(:patient)
сбой, потому что, подождите, params
не включает :patient
, и вы, ну, require
это сделали.