Я пытаюсь использовать collection_select для решения этой проблемы:
Пользователи могут создать случай и должны иметь возможность выбрать диагноз. Поэтому я создал основу для диагностики, включающую болезнь: строку для создания диагноза. После этого я выполнил миграцию с помощью «AddDiagnosisToCase», которая выглядит так:
class AddDiagnosisToCase < ActiveRecord::Migration[6.0]
def change
add_reference :cases, :diagnosis, null: false, foreign_key: true
end
end
Сейчас пытаюсь настроить свой _form.html.erb, чтобы добавить выборку, где появляются все диагнозы, которые мы создали ранее.
К сожалению, это не сработало, потому что я сделал это неправильно:
<%= form_for @case do |form| %>
...
<div class = "field">
<%= form.label :diagnosis %>
<%= form.collection_select :diagnosis, :case_id, Diagnosis.all, :id, :name, :promt => true %>
</div>
Кто-нибудь может помочь?
В зависимости от вашей миграции вы должны установить дляdiagn_id значение case. Ниже код должен работать для вас
<%= form_for @case do |form| %>
...
<div class = "field">
<%= form.label :diagnosis %>
<%= form.collection_select :diagnosis_id, Diagnosis.all, :id, :illness, :prompt => true %>
</div>
Какие столбцы диагностической таблицы имеют? Похоже, в диагностической таблице нет столбцов с именами.
Это таблица для диагностики: create_table "diagnoses", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", force: :cascade do |t| t.string "illness" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false end
Мы хотим показать illness в раскрывающемся списке выбора?
@Cookieholik Я обновил ответ, не могли бы вы проверить сейчас?
Да, мы хотим показать illness в раскрывающемся списке выбора.
Пробовал обновленный ответ, та же ошибка: неопределенный метод «слияния» для :illness:Symbol . :(
Не могли бы вы попробовать сейчас?
Спасибо! Я пробовал. К сожалению, возникла эта ошибка: NoMethodError in Cases#new Показ... где строка № 41 поднята: неопределенный метод `merge' для :name:Symbol