Как использовать collection_select для настройки моей формы?

Я пытаюсь использовать 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>

Кто-нибудь может помочь?

Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В зависимости от вашей миграции вы должны установить для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>

Спасибо! Я пробовал. К сожалению, возникла эта ошибка: NoMethodError in Cases#new Показ... где строка № 41 поднята: неопределенный метод `merge' для :name:Symbol

Cookieholik 18.12.2020 20:34

Какие столбцы диагностической таблицы имеют? Похоже, в диагностической таблице нет столбцов с именами.

Sampat Badhe 19.12.2020 04:19

Это таблица для диагностики: 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

Cookieholik 19.12.2020 14:00

Мы хотим показать illness в раскрывающемся списке выбора?

Sampat Badhe 19.12.2020 14:10

@Cookieholik Я обновил ответ, не могли бы вы проверить сейчас?

Sampat Badhe 19.12.2020 14:12

Да, мы хотим показать illness в раскрывающемся списке выбора.

Cookieholik 19.12.2020 23:21

Пробовал обновленный ответ, та же ошибка: неопределенный метод «слияния» для :illness:Symbol . :(

Cookieholik 19.12.2020 23:21

Не могли бы вы попробовать сейчас?

Sampat Badhe 20.12.2020 03:10

Другие вопросы по теме