Я нахожусь в момент создания сложной формы рельсов для отношения 1: n с вложенной формой и набором коллекции со значениями из еще одна таблица данных.RoR: Как установить значение в коллекции_избрать из базы данных в виде редактирования (отношение 1: много)
До сих пор он перезаписывает значение базы данных первой записью в списке значений collection_select всякий раз, когда пользователь не выбирает правильное значение перед обновлением. Мне все равно нужно правильно установить начальное значение в элементе collection_select.
Я прочитал много вопросов на SO уже, наиболее уместным было: f-collection-select-not-displaying-the-selected-value
Единственное, по-прежнему не хватает (я надеюсь!), Является установка значения поля формы из базы данных, поэтому он не перезаписывается значением по умолчанию из выбираемых выбираемых значений, даже если пользователь не коснулся выбора.
Этот фрагмент получен из моего кода и решения вышеупомянутого вопроса и является неправильным.
Пусть человек есть много вещей, и validthings содержат возможные значения для вещей:
В таблице вещей там будет только Thing строки, которые также находятся в таблице validthings. Можно выделить значение collection_select для параметра param из таблицы вещей, которая может быть идентифицирована в списке значений из таблицы validthings.
<div class="col-md-12">
<%= form_for(@person) do |f| %>
<%= f.fields_for :things do |d| %>
<%= d.hidden_field :id %><%= d.hidden_field :person_id %>
<%= d.collection_select(:Thing, Validthings.all, :Thing, :Thing, {:selected => @person.things.map(&:id).Thing.to_s}) %>
<% end %>
<% end %>
</div>
Это то, что является неправильным:
@ person.things.map (&: идентификатор) .Thing.to_s
И да, в таблицах людей и вещей и validthings столбец называется «Вещь». Это уникальная строка в табличных правилах - структура базы данных не была моей идеей, я только работаю с ней.