0

Я нахожусь в момент создания сложной формы рельсов для отношения 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 столбец называется «Вещь». Это уникальная строка в табличных правилах - структура базы данных не была моей идеей, я только работаю с ней.

ответ

0

Обнаружили полезный ответ здесь: rails-accessing-current-value-of-a-symbol к другому вопросу, но моя проблема заключалась в том, что я не знал, как получить доступ к информации, которую я знал, уже должен быть загружен.

Это, как я могу указать значение по умолчанию для collection_select быть данные из базы данных:

<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 => d.object.Thing}) %> 
    <% end %> 
    <% end %> 
</div> 

где d.object.Thing является значение соответствующего объекта элемента формы для атрибута «Вещь», который уже присутствует в форме.

Буду очень признателен за конструктивные идеи, если мой подход не рубиновый или некоторые из них. Я довольно новичок в рубинах, рельсах и т. Д.

Смежные вопросы