Создать несколько пользователей в одной форме - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть модель события и страница показа, которая показывает страницу @event и форму регистрации клиента.

Теперь мой клиент хочет получить форму для события другого типа, которая также будет содержать поля клиента, но помечена не именем клиента, а именем родителя / опекуна (аналогичная форма для клиента), и он также хочет *Кнопка 1004 * внизу, которая позволит родителю / опекуну добавить максимум 3 игроков.Таким образом, бизнес нужен, чтобы родитель регистрировал «игроков».Должно быть возможно добавить максимум 3 игроков.Мне интересно, как я мог бы создать 4 клиентов в одной форме.Для меня это звучит немного странно, если честно.Это вообще возможно?Или я должен представить модель Parent и модель Player и соединить их друг с другом.Так что для конкретных видов событий я бы создал Parent / Carer и максимум 3 игрока.

<%= simple_form_for @customer do |f| %>
 ...
<% end %>

1 Ответ

0 голосов
/ 23 ноября 2018

Нет полной информации, чтобы дать вам конкретное решение, но оно поможет вам в правильном направлении, чтобы решить его на примере.

Допустим, у вас есть модель Parent и модель ваших игроков, которую вы хотитедобавить родителя с 3 игроками в той же форме.

мы определяем в ваших родительских моделях, что вы можете принимать вложенные атрибуты для ваших игроков, поэтому, например, если вы хотите создать родителя с некоторыми игроками, вы можете сделать что-то вроде Parent.create(params_with_players_too), и он создаст родительскийи создать игроков тоже, связанных с этим родителем.конечно, имея в виду, что параметры приходят правильным образом.

Class Parent < ActiveRecord::Base
  has_many :books
  accepts_nested_attributes_for :players
end 

Class Player < ActiveRecord::Base
  belongs_to :parent
end

, после этого ваша форма может выглядеть примерно так:

<%= form_for @parent do |f| %>
  <%= f.fields_for :players, [Player.new]*3 do |player| %>
    <%= player.text_field :name %>
  <% end %>
  <%= f.submit %>
<% end %>

, и в вашем контроллере вы должныразрешить игрокам params тоже, что-то вроде этого

def create
    @parent = Parent.new(parent_params)
    if @parent.save
    ...
end

def parent_params
  params.require(:parent).permit(:attribute1, players_attributes: [:id, :name])
end

конечно, вам придется понять это и адаптировать его к вашему конкретному случаю, надеюсь, что это поможет вам.

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