Как создать флажки с помощью скаффолдов в рельсах? - PullRequest
0 голосов
/ 09 января 2020

Я должен создать функцию для управления своими контрактами. Все шло отлично, работая со строками и т. Д. c .. но мне нужно создать флажки в моем скаффолде для примера () Химик Toll () И я хочу сохранить это, если флажки установлены.
Я попытался поставить этот код в файле формы, он появляется, но не сохраняйте данные при проверке, я думаю, это не правильный путь, потому что в базе данных ничего не создано.

<input type="checkbox" name="tag_ids[]" value="1" />

Я Планирование генерировать все флажки в виде строк при создании скаффолда и попробовать что-то еще. Кто-нибудь имеет лучшую идею, как я могу выполнить sh это, может быть самый простой способ, насколько это возможно, не для реального развития. Спасибо за все.

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Вы можете добавить следующее к вашей форме

<% Tag.all.each do |tag| %>
  <label>
    <%= f.check_box_tag "contract[tag_ids][]", tag.id, @contract.tags.include?(tag) %>
    <%= tag.name %>
  </label>
<% end %>

Это может быть передано через ваши параметры, если ваши сильные параметры позволяют им, например:

params.require(:contract).permit(.... ,  tag_ids: [])

см. Здесь для правильное обсуждение: https://kolosek.com/rails-join-table/

Также, если вам интересно, я бы посмотрел на использование simple_form (https://github.com/plataformatec/simple_form) для ваших форм рельсов. Это делает все это действительно легким.

0 голосов
/ 09 января 2020

сначала вы должны проверить, есть ли переменные в белом списке, во-вторых, вы должны попробовать помощник rails для этого:

<%= form.check_box "tag_ids[]", "Chemist", false, id:"1"%>

с этим синтаксисом входные данные будут сохранены в массиве, так что вы можете добавить несколько флажков для той же переменной. вход будет затем сохранен ["Chemist","Toll"]

Позже вы можете легко разделить их на .split

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...